What is the best way to check URL change with Selenium in Python? What is the best way to check URL change with Selenium in Python? selenium selenium

What is the best way to check URL change with Selenium in Python?


I was thinking to do that somehow with WebDriverWait

Exactly. First of all, see if the built-in Expected Conditions may solve that:

  • title_is
  • title_contains

Sample usage:

from selenium.webdriver.common.by import Byfrom selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as ECwait = WebDriverWait(driver, 10)wait.until(EC.title_is("title"))wait.until(EC.title_contains("part of title"))

If not, you can always create a custom Expected Condition to wait for url to match a desired regular expression.


This is how I implemented it eventually. Works well for me:

driver = webdriver.Chrome()wait = WebDriverWait(driver, 5)desired_url = "https://yourpageaddress"def wait_for_correct_current_url(desired_url):    wait.until(        lambda driver: driver.current_url == desired_url)


To really know that the URL has changed, you need to know the old one. Using WebDriverWait the implementation in Java would be something like:

wait = new WebDriverWait(driver, 10);wait.until(ExpectedConditions.not(ExpectedConditions.urlToBe(oldUrl)));

I know the question is for Python, but it's probably easy to translate.