为每个控件(widget = button,combobox,textfield,...)创建一个(可重用的)页面对象。小部件的构造函数接受WebElement或By对象。每个页面对象都应该使用可重用的页面对象。这是一个简单登录页面的例子。
public class MyLoginPage {
private TextField mUsername;
private TextField mPassword;
private Button mSignon;
...
// getter
public TextField getUsername() {
return mUsername;
}
}
随着使用一些启发式,你应该能够选择正确的小部件来使用。这应该回答你的第一个问题。
对于第二个问题。 您可以在您的页面对象上实现特定的方法,以返回另一页面对象。类似的东西:
你也可以实现按钮作为一个通用的类。 上的按钮组件的方法请点击:
public <T extends Widget> T click() {
... // coe that makes the click
return new T(...);
}
登录页面内的成员声明:
private Button mSignon<MyHomePage>;
所以你可以这样写:
MyHomePage hp = loginPage.getSignon().click();
要么你实现一个工厂页面目的。工厂能够确定屏幕的当前状态并返回与您所看到的页面目标相匹配的页面目标。您可以确定通过尝试在屏幕上找到某个特定元素(即,登录按钮仅存在于登录页面上)。
根本不是一个确定的答案,但我希望它已经给你指示。不要犹豫,在评论中发布一个问题,我会更新这个答案。
我预见的问题是,它通常都会有相同的挫折作为记录和回放工具做。他们会产生可怕的选择器和垃圾代码,可以通过手工更好地完成。 – Arran
@Arran您可以通过将每个元素的标记名称和该元素的所有属性生成为XPATH。 –