As @ user227215说你应该使用WebDriverWait来等待你的页面中的元素:
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException
browser = webdriver.Firefox()
browser.get("url")
delay = 3 # seconds
try:
WebDriverWait(browser, delay).until(EC.presence_of_element_located(browser.find_element_by_id('IdOfMyElement')))
print "Page is ready!"
except TimeoutException:
print "Loading took too much time!"
我已经用它来检查警报。您可以使用任何其他类型方法来查找定位器。
编辑1:
我应该提到,webdriver将等待一个页面加载默认情况下。它不等待加载在框架内,也不等待ajax请求。这意味着当你使用.get(‘url’),你的浏览器将等待页面完全加载,然后转到代码中的下一个命令。但是当你发布一个ajax请求,webdriver不等待,你有责任等待适当的时间页面或页面的一部分加载;因此有一个名为expected_conditions的模块。