当使用不存在的小部件调用find_element方法时,Selenium Webdriver卡住了

时间:2013-07-29 08:42:27

标签: python selenium

我正在尝试使用selenium webdriver进行测试。我的selenium版本是2.33,浏览器是Firefox。脚本语言是python

现在我调用方法find_element_by_xpath(blabla)如果小部件不存在。该程序只是卡在那里,没有显示异常。它只是卡住了。顺便说一下,我尝试了find_element_by_idfind_element_by_namefind_elements并将Firefox更改为3.5,14.0,21.0,22.0。问题总是出现。

有人遇到过这个问题吗? 我只是想要一个例外而不仅仅是卡住了。帮助...

2 个答案:

答案 0 :(得分:2)

如果找不到元素,

find_element _ * 会引发selenium.common.exceptions.NoSuchElementException

find_elements _ * 如果找不到元素,则返回空列表。

这两个功能都没有卡住。

根据Selenium documentation

  

4.1。按ID定位

     

当您知道元素的id属性时使用此选项。使用此策略,第一个元素具有id属性   将返回与该位置匹配的值。如果没有元素   匹配id属性,将引发NoSuchElementException。

     

...

     

4.2。按名称定位

     

当您知道元素的name属性时使用此选项。使用此策略,第一个元素具有name属性   将返回与该位置匹配的值。如果没有元素   匹配名称属性,将引发NoSuchElementException。

答案 1 :(得分:0)

如果您确定元素在文档上,则可以使用WebDriverWait函数。您应该在from selenium.webdriver.support.ui import WebDriverWait开头定义WebDriverWait,如果您未在from selenium.webdriver.common.by import By之前定义,则使用WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.ID, "blabla"))) 这就是我们需要做的。我希望这会对你有所帮助。