我对硒Java测试使用Pagefactory设计模式,并且一切正常。我想知道是否可以为多个操作仅调用一次PageFactory实例,而不是始终在同一方法中重复该实例。我有这样的东西:
private static BasePage basePage; //There is BasePage class somewhere that holds PageFactory elements
basePage = PageFactory.initElements(driver, BasePage.class); // PageFactory initialisation in the test class
public static void loginTest() throws InterruptedException {
basePage.acceptButton.click();
basePage.skipButton.click();
basePage.loginButton.click();
}
每次执行操作时,我都会重复basePage
。我在想Java是否有办法只调用一次basePage
实例。我尝试过这样的事情:
basePage.acceptButton.click()
.skipButton.click();
.loginButton.click();
代码无法编译。有解决方法吗?还是在Java之外?
答案 0 :(得分:1)
这完全取决于测试的设计方式,页面的内容以及您的体验结果。
我确实尝试设计测试,以便可以在多个测试中共享一个页面对象,而您只需要在类级别声明该页面对象变量即可。需要注意的是,您的测试步骤需要按预期的顺序运行。
通常来说,即使页面本身发生变化,它也可以正常工作,因为只有在您引用每个元素后,才能访问每个元素。但是,如果发现自己遇到了一个过时的元素异常,则最好强制重新初始化页面对象。
更新
我刚刚重新阅读了您的全部问题,并意识到我做了一个错误的假设。您要链接动作,而不是重新实例化页面对象。据我所知,这对于页面对象是不可能的,但是我并没有声称自己是Java专家,所以也许其他人可以确认或否认这一点。
答案 1 :(得分:1)
如果使用“调用链”怎么办? 在BasePage类中,每个方法都必须采用这种方式完成
/target/generated-sources/jooq
然后您可以像这样调用测试:
public BasePage acceptButtonClick(){
acceptButton.click();
return this;
}
public BasePage skipButtonClick(){
skiptButton.click();
return this;
}
public BasePage loginButtonClick(){
loginButton.click();
return this;
}