I\'m moving some tests from Selenium to the WebDriver. My problem is that I can\'t find an equivalent for selenium.wait_for_condition. Do the Python bindings have this at the mo
Currently it isn't possible to use wait_for_condition with WebDriver. The python selenium code does provide the DrivenSelenium class for accessing the old selenium methods, but it can't do wait_for_condition. The selenium wiki has some info on that.
Your best bet is to use the WebDriverWait class. This is a helper class that periodically executes a function waiting for it to return True. My general usage is
driver = webdriver.Firefox()
driver.get('http://example.com')
add = driver.find_element_by_id("ajax_button")
add.click()
source = driver.page_source
def compare_source(driver):
try:
return source != driver.page_source
except WebDriverException:
pass
WebDriverWait(driver, 5).until(compare_source)
# and now do some assertions
This solution is by no means ideal.. The try/except is necessary for situations where the page request/response cycle is delayed waiting for some ajax activity to complete. If compare_source get's called in the midst of the request/response cycle it'll throw a WebDriverException.
The test coverage for WebDriverWait is also helpful to look at.