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

我使用 Pagefactory 设计模式进行 selenium java 测试,一切正常。我想知道是否可以只为多个操作调用一次 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?


杨魅力
浏览 120回答 2
2回答

幕布斯7119047

如果使用“调用链”怎么办?在 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();

慕妹3242003

这完全取决于您的测试是如何设计的、页面的内容以及您的体验结果。我确实尝试设计我的测试,以便我可以在多个测试中共享一个页面对象,您只需要在类级别声明页面对象变量即可。需要注意的是,您的测试步骤需要按预期顺序运行。一般来说,即使页面本身发生变化,它也会正常工作,因为在您引用它之前不会访问每个元素。但是,如果您发现自己遇到过时元素异常,最好强制重新初始化页面对象。更新我刚刚重新阅读了您的整个问题,并意识到我做了一个错误的假设。您正在寻找链接操作,而不是重新实例化页面对象。据我所知,这对于页面对象是不可能的,但我并不声称自己是 Java 专家,所以也许其他人可以确认或否认这一点。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java