为了账号安全,请及时绑定邮箱和手机立即绑定

我可以为多个 Web 操作只调用一次 PageFactory 实例吗?

我可以为多个 Web 操作只调用一次 PageFactory 实例吗?

杨魅力 2022-05-25 16:32:46
我使用 Pagefactory 设计模式进行 selenium java 测试,一切正常。我想知道是否可以只为多个操作调用一次 PageFactory 实例,而不是在同一方法中一直重复该实例。我有这样的事情:private static BasePage basePage; //There is BasePage class somewhere that holds PageFactory elementsbasePage = PageFactory.initElements(driver, BasePage.class); // PageFactory initialisation in the test classpublic 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?
查看完整描述

2 回答

?
幕布斯7119047

TA贡献1794条经验 获得超8个赞

如果使用“调用链”怎么办?在 BasePage 类中,每个方法都必须以这种方式完成


public BasePage acceptButtonClick(){

   acceptButton.click();

   return this;

}


public BasePage skipButtonClick(){

   skiptButton.click();

   return this;

}

public BasePage loginButtonClick(){

   loginButton.click();

   return this;

}

然后你可以像这样在测试中调用:


basepage.acceptButtonClick()

        .skipButtonClick()

        .loginButtonClick();


查看完整回答
反对 回复 2022-05-25
?
慕妹3242003

TA贡献1824条经验 获得超6个赞

这完全取决于您的测试是如何设计的、页面的内容以及您的体验结果。

我确实尝试设计我的测试,以便我可以在多个测试中共享一个页面对象,您只需要在类级别声明页面对象变量即可。需要注意的是,您的测试步骤需要按预期顺序运行。

一般来说,即使页面本身发生变化,它也会正常工作,因为在您引用它之前不会访问每个元素。但是,如果您发现自己遇到过时元素异常,最好强制重新初始化页面对象。

更新

我刚刚重新阅读了您的整个问题,并意识到我做了一个错误的假设。您正在寻找链接操作,而不是重新实例化页面对象。据我所知,这对于页面对象是不可能的,但我并不声称自己是 Java 专家,所以也许其他人可以确认或否认这一点。


查看完整回答
反对 回复 2022-05-25
  • 2 回答
  • 0 关注
  • 119 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号