Python 如何为新选项卡设置页面加载超时

Python 如何为新选项卡设置页面加载超时,python,python-2.7,python-3.x,selenium,selenium-webdriver,Python,Python 2.7,Python 3.x,Selenium,Selenium Webdriver,当我运行上述代码时,它将执行以下操作:block always并打印“页面加载时间过长” 但当我运行下面的代码时,我在其中创建了一个页面,其中有一个id为newPage的按钮,它一单击就在new选项卡中打开了链接(9gag)。 我没有得到任何例外。它需要完整的时间来加载和打印网站的url browser=webdriver.Firefox() browser.set_page_load_timeout(4) try: browser.get("https://9gag.com") exc

当我运行上述代码时,它将执行以下操作:block always并打印“页面加载时间过长”

但当我运行下面的代码时,我在其中创建了一个页面,其中有一个id为newPage的按钮,它一单击就在new选项卡中打开了链接(9gag)。 我没有得到任何例外。它需要完整的时间来加载和打印网站的url

browser=webdriver.Firefox()
browser.set_page_load_timeout(4)
try:
    browser.get("https://9gag.com")
except:
    print("Page took too much time to load")
我正在使用Firefox28和selenium 2.41


页面加载超时不适用于单击的元素,因为Selenium无法知道是否正在加载新页面。这就是为什么没有应用页面加载超时。您可以创建WebDriverWait并等待页面上的某个元素可见,等等,然后以此方式设置超时。

如果我必须在同一页面上处理多个元素,请为您要查找的每个元素添加一个等待。您还可以使用
WebDriverWait
并使用定位多个元素的
预期条件,例如定位的所有元素的可见性(定位器)
。请参阅和。:)我是否必须在单击之前使用webdriverwait()或在切换到新选项卡之前或在打印之前使用webdriverwait()?在单击之前添加webdriverwait使其等待指定的延迟量,最后捕获异常,然后继续:(
browser=webdriver.Firefox()
browser.get("file:///F:/documents/html_level_one/link_to_extreme_page_load.html")
browser.set_page_load_timeout(4)
browser.find_element_by_id("newPage").click()
browser.switch_to_window(browser.window_handles[-1])
print(browser.current_url)