Я использую 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;