Как я могу инициализировать элементы в нескольких классах? - PullRequest
0 голосов
/ 30 сентября 2019

У меня есть один класс:

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.

1 Ответ

0 голосов
/ 30 сентября 2019
public MainPageObjectAction mainPageObjectAction1;

public PageFactoryInitialization(MainPageObjectAction mainPageObjectAction) {

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

}

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

public void 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, только с расширением класса это работает

...