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

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

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

Типичное решение — дождаться, пока элемент на целевой странице станет доступным. К сожалению, мы используем более 100 уникальных URL-адресов, поэтому нет предсказуемой целевой страницы.

Итак, как можно реализовать ExpectedCondition, который ожидает, пока приложение стабилизируется в отношении перенаправлений?

Основная повестка дня заключается в том, что у меня есть набор URL-адресов, и я хотел убедиться, что все эти URL-адреса действительны, проверив их содержимое. Все это прямые URL-адреса учебных материалов, партнером которых является моя организация, например, Lynda, skillsoft и т. д. Поэтому, когда мы запускаем эти URL-адреса через автоматический скрипт, сначала он запрашивает аутентификацию (мои организационные учетные данные), а затем перенаправляет на соответствующие сайты. Во время этих перенаправлений в некоторых случаях происходит несколько перенаправлений, и, наконец, загружается страница содержимого. Это сценарий. Мой скрипт терпит неудачу в основном из-за ожидания, я думаю


person Avinash    schedule 15.11.2017    source источник
comment
После входа в систему вы получите правильное действие пользователя. Таким образом, вы можете написать цикл while, в котором вы можете искать имя пользователя.while(username.isDisplayed(){Thread.sleep(5000);}   -  person Sudha Velan    schedule 15.11.2017
comment
Некоторые URL-адреса имеют страницу входа, где некоторые имеют прямой URL-адрес. Те страницы, которые не имеют логина. Как будем ждать?   -  person Avinash    schedule 15.11.2017
comment
Не могли бы вы подробнее рассказать, как these redirects were causing issues ?   -  person DebanjanB    schedule 15.11.2017
comment
Вы делаете wait for an element на predictable landing page что еще может быть вашими точками проверки? Можете ли вы обновить вопросы с вашими точными шагами вручную, которые вы пытаетесь Automate?   -  person DebanjanB    schedule 15.11.2017
comment
Основная повестка дня заключается в том, что у меня есть набор URL-адресов, и я хотел убедиться, что все эти URL-адреса действительны, проверив их содержимое. Все это прямые URL-адреса учебных материалов, партнером которых является моя организация, например, Lynda, skillsoft и т. д. Поэтому, когда мы запускаем эти URL-адреса через автоматический скрипт, сначала он запрашивает аутентификацию (мои организационные учетные данные), а затем перенаправляет на соответствующие сайты. Во время этих перенаправлений в некоторых случаях происходит несколько перенаправлений, и, наконец, загружается страница содержимого. Это сценарий. Мой скрипт терпит неудачу в основном из-за ожидания, я думаю   -  person Avinash    schedule 15.11.2017


Ответы (1)


Как вы упомянули, multiple redirection happening and finally the content page is loaded и script fails mainly due to the wait вполне возможны. В этих случаях нам нужно вызвать ExplicitWait, т. е. WebDriverWait с условием expected_conditions, установленным в одно из следующих значений:


Ява :

  1. urlToBe: при проверке текущего URL-адреса ожидается точное совпадение.

    new WebDriverWait(driver, 10).until(ExpectedConditions.urlToBe("https://www.facebook.com/"));
    
  2. urlContains: Ожидание проверки того, что текущий URL содержит подстроку с учетом регистра.

    new WebDriverWait(driver, 10).until(ExpectedConditions.urlContains("facebook"));
    
  3. urlMatches: Ожидание проверки текущего шаблона URL — это ожидаемый шаблон, который должен точно совпадать.

    new WebDriverWait(driver, 10).until(ExpectedConditions.urlMatches("my_regex"));
    

Питон:

  1. url_to_be: Ожидается, что URL-адрес текущей страницы будет определенным URL-адресом.

    WebDriverWait(driver, 10).until(EC.url_to_be("https://www.google.co.in/"))
    
  2. url_matches: ожидание соответствия URL-адреса определенному регулярному выражению.

    WebDriverWait(driver, 10).until(EC.url_matches("my_regex"))
    
  3. url_contains: Ожидается, что URL-адрес текущей страницы будет содержать определенный текст.

    WebDriverWait(driver, 10).until(EC.url_contains("google"))
    
  4. url_changes: Ожидание проверки текущего URL-адреса, который не должен совпадать с точным совпадением.

    WebDriverWait(driver, 10).until(EC.url_changes("https://www.google.co.in/"))
    
person DebanjanB    schedule 15.11.2017