Python selenium依赖于查找不存在的元素



我在Python中使用selenium,当我搜索不存在的元素时,它总是冻结。我真的尝试了所有的方法(Firefox版本17.0.1):

>>> import selenium
>>> selenium.__version__
'2.26.0'
>>> from selenium import webdriver
>>> from selenium.webdriver.support.ui import WebDriverWait
>>> ff = webdriver.Firefox()
>>> ff.implicitly_wait(5)
>>> ff.set_page_load_timeout(5)
>>> ff.set_script_timeout(5)
>>> waiter = WebDriverWait(ff, 5)
>>> waiter.until(lambda ff: ff.find_element_by_name("foo"))

最后一个命令无限期冻结。我如何让firefox简单地返回None或抛出异常时,它没有找到一个元素,而不是挂永远?我使用的是selenium 2.26.0

这似乎是2.26.0版本的错误,pip install selenium==2.27.0在我的电脑上修复了它

根据这里找到的答案

如果您使用的是Firefox 17和Selenium 2.26.0,那么您将遇到缺陷#4814:http://code.google.com/p/selenium/issues/detail?id=4814

现在,我正在使用这个解决方案:

def selenium_safe_find_element_by_name(ff, element_name):
    elements = ff.find_elements_by_name(element_name)
    if not elements:
        raise ValueError("<name=%s> not found" % (element_name,))
    return elements[0]

但是这似乎不需要这个变通方法也能正常工作。

最新更新