Python 当使用不存在的小部件调用find_元素方法时,SeleniumWebDriver卡住

Python 当使用不存在的小部件调用find_元素方法时,SeleniumWebDriver卡住,python,selenium,Python,Selenium,我正在尝试使用SeleniumWebDriver进行测试。我的selenium版本是2.33,浏览器是Firefox。脚本语言是python 现在,当我调用方法find_element_by_xpath(blabla)时,如果小部件不存在。程序只是停留在那里,没有显示任何异常。只是卡住了。顺便说一句,我已经尝试了find_element_By_id,find_element_By_name,find_elements,并将Firefox更改为3.5、14.0、21.0、22.0。问题总是出现 有

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

现在,当我调用方法
find_element_by_xpath(blabla)
时,如果小部件不存在。程序只是停留在那里,没有显示任何异常。只是卡住了。顺便说一句,我已经尝试了
find_element_By_id
find_element_By_name
find_elements
,并将Firefox更改为3.5、14.0、21.0、22.0。问题总是出现

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

查找元素*如果未找到元素,则引发
selenium.common.exceptions.NoSuchElementException

查找元素.*如果未找到元素,则返回空列表

这两个功能都没有卡住

根据:

4.1。按Id定位

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

4.2。按名称查找

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


如果您确定该元素位于文档中,则可以使用WebDriverWait函数。您应该从selenium.webdriver.support.ui导入WebDriverWait开始定义WebDriverWait,如果您之前没有从selenium.webdriver.common.by导入定义WebDriverWait,那么使用
WebDriverWait(driver,20)。直到(EC.presence_of_element_位于((by.ID,“blablablablabla”))

这就是我们需要做的。我希望这会对您有所帮助。

谢谢您的回复。我大多数时候都会看到例外情况。但事实是,有时它只是卡住了。我不知道为什么。如果我将xpath更改为现有的小部件,它就不会再卡住了。这对我也有帮助!非常感谢:)这意味着我必须等到超时?我只想快速异常,使用超时将浪费我的大量工作时间。我通常对此类人员使用Xpath,更成功。如果页面加载了所有元素,selenium可以找到它们。你需要找到一些东西(路径、类名等)。你可以毫无例外地找到元素,然后你也可以跳过这个异常。