Могу ли я вызвать экземпляр PageFactory только один раз для нескольких веб-действий? - PullRequest
0 голосов
/ 28 января 2019

Я использую шаблон проектирования Pagefactory для тестов на селен, и все работает отлично.Мне интересно, можно ли вызвать экземпляр 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?

1 Ответ

0 голосов
/ 28 января 2019

Это полностью зависит от того, как устроен ваш тест, от содержания страницы и ваших опытных результатов.

Я стараюсь спроектировать свои тесты так, чтобы я мог совместно использовать объект страницы в нескольких тестах, и вы простодля этого нужно объявить переменную объекта страницы на уровне класса.Предостережение заключается в том, что ваши этапы тестирования должны выполняться в ожидаемом порядке.

В общем, все будет работать нормально, даже если сама страница изменится, поскольку к каждому элементу нет доступа, пока вы не ссылаетесь на него.Тем не менее, если вы обнаружите, что получаете исключение устаревшего элемента, рекомендуется переинициализировать объект страницы.

Обновить

Я просто перечиталтвой ВСЁ вопрос и понял, что сделал ложное предположение.Вы ищете цепочку действий, а не создание экземпляра объекта страницы.Насколько я знаю, это невозможно с объектами страницы, но я не претендую на звание эксперта по java, поэтому, возможно, кто-то другой может подтвердить или опровергнуть это.

...