from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
browser = webdriver.Firefox()
browser.get("http://testsite.com")
element = WebDriverWait(browser, 10).until(lambda browser : browser.find_element_by_id("element"))
element.click() # it actually goes to page http://testsite.com/test-page.html
print "Just clicked! And I'm expecting timeout error!"
new_element = WebDriverWait(browser, 0.1).until(lambda browser : browser.find_element_by_id("element"))
print "Too bad there's no timeout error, why?!"
OK, как вы можете видеть, даже если я установил время ожидания на 0,1 секунды, по-прежнему не выдается исключение тайм-аута Когда element.click()
выполняется, он не блокируется до тех пор, пока не загрузится вся страница, и поэтому Just clicked !И я ожидаю ошибку тайм-аута!
появился, и к моему удивлению new_element = WebDriverWait(browser, 0.1).until(лямбда-браузер : browser.find_element_by_id("элемент"))
ждать до загружается вся страница. И если вы используете неявные ожидания
, вы получите тот же результат.
Я хочу сказать, что иногда после того, как вы щелкнете по элементу, загрузка страницы может занять до нескольких часов. из-за плохого прокси-сервера, и вы, очевидно, НЕхотите ждать так долго, то, что вы хотите, это исключение тайм-аута. В этом случае, как бы вы заставили это работать?