How to Wait for a Redirect Chain to Settle using Selenium WebDriver where final page loaded is not predictable? How to Wait for a Redirect Chain to Settle using Selenium WebDriver where final page loaded is not predictable? selenium selenium

How to Wait for a Redirect Chain to Settle using Selenium WebDriver where final page loaded is not predictable?


As you mentioned multiple redirection happening and finally the content page is loaded and the script fails mainly due to the wait is pretty much possible. In these cases we need to induce ExplicitWait i.e. WebDriverWait with expected_conditions clause set to either of the following :


Java :

  1. urlToBe: An expectation for checking the current url is an exact match.

    new WebDriverWait(driver, 10).until(ExpectedConditions.urlToBe("https://www.facebook.com/"));
  2. urlContains: An expectation for checking that the current url contains a case-sensitive substring.

    new WebDriverWait(driver, 10).until(ExpectedConditions.urlContains("facebook"));
  3. urlMatches: An expectation for checking the current url pattern is the expected pattern which must be an exact match.

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

Python :

  1. url_to_be: An expectation for the URL of the current page to be a specific url.

    WebDriverWait(driver, 10).until(EC.url_to_be("https://www.google.co.in/"))
  2. url_matches: An expectation for the URL to match a specific regular expression.

    WebDriverWait(driver, 10).until(EC.url_matches("my_regex"))
  3. url_contains: An expectation for the URL of the current page to contain specific text.

    WebDriverWait(driver, 10).until(EC.url_contains("google"))
  4. url_changes: An expectation for checking the current url which must not be an exact match.

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