Как реализовать AjaxElementLocatorFactory через Selenium и Page Factory? - PullRequest
0 голосов
/ 28 февраля 2019

Я использовал Pagefactory для настройки всех своих страниц в Selenium.Дело в том, что тест является динамическим в том смысле, что некоторые элементы существуют только в некоторых тестах.Насколько я понимаю, AjaxElementFactory работает следующим образом:

PageFactory.initElements(new AjaxElementLocatorFactory(driver,5), this);

@FindBy(id="ctl00_DefaultContent_RbIndividual")
WebElement OwnershipIndividual;

public void sendString(String stuff){
    OwnershipIndividual.sendKeys(stuff);
}

Но если элемент OwnershipIndividual не находится в 5 секундах, он выдаст исключение NoSuchElementException.Моя проблема в том, что, хотя я установил тайм-аут на 5 секунд, он все равно занимает 50-60 секунд.Почему это так?

1 Ответ

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

Я не вижу никакой проблемы как таковой в ваших испытаниях кода.

AjaxElementLocatorFactory

AjaxElementLocatorFactory - это концепция отложенной загрузки в Page Factory шаблон для идентификации WebElements только тогда, когда они используются в какой-либо операции, т.е. timeOut для WebElement может быть назначен классу страницы объекта с помощью AjaxElementLocatorFactory.

  • Синтаксис:

    PageFactory.initElements(new AjaxElementLocatorFactory(driver, TimeoutValue), this);
    
  • Пример:

    PageFactory.initElements(new AjaxElementLocatorFactory(driver,5), this);
    

Приведенный выше код будет ожидать максимум 5 секунд, покаэлементы, указанные в аннотациях, загружены.Если элемент не найден за указанный промежуток времени, он выдаст NoSuchElementException.

Так же, как в вашем кодовом блоке, если элемент не найден после 5 seconds, NoSuchElementException должен быть выброшенвозможно, не завершил загрузку, когда load() возвращается.После вызова load() метод isLoaded() должен продолжать сбой до полной загрузки компонента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...