首页 > 解决方案 > 我可以为多个 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?

标签: javaselenium-webdriverpage-factory

解决方案


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

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

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

更新

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


推荐阅读