Как заставить Selenium дождаться перенаправления страницы перехода, прежде чем запускать утверждение - PullRequest
21 голосов
/ 06 января 2010

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

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

Спасибо.

Ответы [ 4 ]

14 голосов
/ 08 января 2010

Простой подход - подождать некоторый «конкретный» текст на последней странице, для получения дополнительной информации см. Команду «waitForText»

8 голосов
/ 08 декабря 2015

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

Java

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

Ruby:

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

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

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

1 голос
/ 01 марта 2011

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

0 голосов
/ 01 февраля 2018

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

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