相关疑难解决方法(0)

告诉我为什么这不会导致超时错误(selenium 2 webdriver)?

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?!"
Run Code Online (Sandbox Code Playgroud)

好的,正如你所看到的,即使我将等待时间设置为0.1秒,仍然没有抛出超时异常.当element.click()执行它不会阻塞,直到整个页面加载,这就是为什么Just clicked! And I'm expecting timeout error!出现了,让我吃惊new_element = WebDriverWait(browser, 0.1).until(lambda browser : browser.find_element_by_id("element"))等到整个页面加载.如果你使用implicit waits,你会得到相同的结果.

我的观点是,你点击一个元素后,有时可能需要长达甚至几个小时的页面加载,因为一个坏的代理了,你明明不要想等那么久,你想要的是一个超时异常.在这种情况下,你会如何使它工作?

python selenium webdriver selenium-webdriver

7
推荐指数
1
解决办法
1912
查看次数

标签 统计

python ×1

selenium ×1

selenium-webdriver ×1

webdriver ×1