我有一堂课:

public class PageFactoryInitialization {
    public MainPageObjectAction mainPageObjectAction =
        PageFactory.initElements(
            Driver.webDriver,
            MainPageObjectAction.class
        );
}


我在@FindBy中具有所有MainPageObjectAction元素,并且具有扩展PageFactoryInitialization的此类。

@RequiredArgsConstructor
public class MainPageObjectStep extends PageFactoryInitialization {

    @Step("Enter page")
    public void doAction() {
        Driver.webDriver.get("https://staging1.ogrcrew.com");
        Driver.webDriver.manage().window().fullscreen();
        Driver.webDriver.manage().timeouts().implicitlyWait(
            10,
            TimeUnit.SECONDS
        );
        mainPageObjectAction.menuMainNavigation.click();
        mainPageObjectAction.acceptCookies.click();
        mainPageObjectAction.menuMainNavigation.click();
    }
...


我该如何避免

public MainPageObjectAction mainPageObjectAction =
    PageFactory.initElements(Driver.webDriver, MainPageObjectAction.class)


对于页面对象模型的每个类。

我尝试了各种方法,但遇到NullPointerException错误。

最佳答案

public MainPageObjectAction mainPageObjectAction1;

public PageFactoryInitialization(MainPageObjectAction mainPageObjectAction) {

    mainPageObjectAction = PageFactory.initElements(Driver.webDriver, MainPageObjectAction.class);

}

@Before
public void beforeTest() {
    login = PageFactory.initElements(driver, LoginPage.class );
}


公共无效initElements(){
MainPageObjectAction mainPageObjectAction = PageFactory.initElements(Driver.webDriver,MainPageObjectAction.class);
}

   List<Class> init = new ArrayList<>();
   init.add(MainPageObjectAction.class);

   PageFactory.initElements(Driver.webDriver, init);



@Override
public <T> MainPageObjectAction getPage(Class<T> page) {
    return PageFactory.initElements(Driver.webDriver, MainPageObjectAction.class);
}

public static <T> T getPage1(Class<T> page) {
    return PageFactory.initElements(Driver.webDriver, page);
}


到目前为止,这是我尝试过的。 NullPointerException没有任何作用,只有扩展类才起作用

10-07 22:08