Как заставить Selenium ждать перехода страницы переадресации перед запуском утверждения

У меня довольно стандартная ситуация: нажмите кнопку, она загружает страницу перехода с индикатором выполнения или чем-то еще, а затем эта страница перенаправляется на следующую страницу, на что требуется некоторое время для загрузки.

Я хочу запускать утверждения на последней странице, а не на странице перехода. Как сообщить Selenium IDE дождаться загрузки последней страницы перед выполнением утверждений?

Спасибо.

Ответы

Ответ 1

Простым подходом будет ждать некоторый "конкретный" текст на этой последней странице, см. команду waitForText для получения дополнительной информации об этом

Ответ 2

Чтобы добавить подход к Джону, вы можете использовать механизм ожидания Selenium, чтобы убедиться, что элементы на вашей последней странице присутствуют следующим образом:

Джава:

WebDriverWait wait = new WebDriverWait(webDriver, 10); // seconds
wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("foo")));

Рубин:

wait = Selenium::WebDriver::Wait.new(timeout: 10) # seconds
wait.until { driver.find_element(id: "foo") }

Это будет правильно следовать любым перенаправлениям.

Пример из https://code.google.com/p/selenium/wiki/RubyBindings

Ответ 3

Вы можете дважды вызвать строку wait_for_page подряд. Первый ждет переадресации, второй для последней страницы.

Ответ 4

Вы также можете подождать, пока заголовок страницы не станет ожидаемым значением:

$driver->wait()->until(WebDriverExpectedCondition::titleIs('New page title from redirect'));