pageLoadTimeout не работает для Firefox с PageObjects

Я использую Selenium WebDriver для тестирования веб-сайта. У меня есть PageObjects для представления LoginPage, HomePage и ManagementPage. Мой тест сначала входит в систему, которая возвращает HomePage, затем нажимает кнопку, которая возвращает ManagementPage. Затем он проверяет кучу вещей, щелкает ссылку обратно на HomePage, затем щелкает ссылку выхода.

Все это отлично работает с Chrome, вообще без использования pageLoadTimeout. Однако в Firefox я получаю NoSuchElementException при попытке щелкнуть ссылку выхода. Я предполагаю, что это связано с тем, что страница не загружается полностью при попытке нажать кнопку выхода. Поэтому я поставил driver.manage().timeouts().pageLoadTimeout(5000, TimeUnit.MILLISECONDS) в начале теста, сразу после создания драйвера. Я все еще получаю ту же ошибку. Изменение тайм-аута на 5 milliseconds доказывает, что тайм-аут работает, потому что страница не загружается и выдается TimeOutException.

Если я перемещу driver.manage().timeouts().pageLoadTimeout(5000, TimeUnit.MILLISECONDS) в конструктор HomePage, то все будет работать нормально. Поэтому я могу решить свою проблему, установив тайм-аут для каждого PageObject.

Я хотел бы иметь возможность установить это только один раз для каждого драйвера, что, как я понимаю, предназначено для этот вопрос. Но этот вопрос говорит о том, что pageLoadTimeout не работает для перехода по ссылкам, что меня смущает, потому что у меня работает, но только если я устанавливаю его для каждого PageObject.

Есть ли что-то еще, что я должен сделать? Или время ожидания сбрасывается, когда драйвер передается PageObject? Я не понимаю, как это будет происходить, поскольку все, что я делаю в конструкторе, это:

this.driver = driver;

person Yep_It's_Me    schedule 16.06.2014    source источник


Ответы (1)


pageLoadTimeout устанавливает время ожидания завершения загрузки страницы, прежде чем выдавать ошибку, в то время как implicitlyWait указывает количество времени, в течение которого драйвер должен ждать, когда поиск элемента, если он не присутствует в данный момент.
Также вам не нужно устанавливать эти значения для каждой страницы, вам нужно установить их один раз для каждого драйвера.

person Ajinkya    schedule 16.06.2014
comment
Всегда ли их нужно устанавливать? Другие мои тесты работают без них. Только этот тест не работает. - person Yep_It's_Me; 18.06.2014
comment
Нет, вам не нужно устанавливать его, если только вы не хотите изменить значение по умолчанию. - person Ajinkya; 18.06.2014