[英]verify element existence selenium
我知道这个问题以前已经被问过了。 但是即使查看了API,我也无法弄清楚该如何做。
我想通过网络抓取数据,并且有以下代码:
browser = webdriver.Firefox()
browser.get(url)
browser.find_element_by_xpath('//path')
现在在find_element部分执行之前。 我想知道该元素是否确实存在。 我尝试了以下方法:
try:
browser.find_element_by_xpath('//path')
except NoSuchElementException:
print ('failure')
和
if (browser.find_element_by_xpath('//path')[0].size() == 0):
print ('failure')
但是它们都不起作用,即使API指出size()是WebElement
的可调用函数,并且该异常由find
系列方法抛出。 我不明白为什么这些都不起作用。 但是,如果有人可以给我一个解释和一个可行的例子,我将不胜感激。
如果缺少该元素,则第一个代码段应引发NoSuchElementException
。 如果不这样做,那么从您的问题信息中不清楚为什么会这样。 (或者也许您期望它找不到一个元素,但是它确实找到了一个?)
第二个代码段无法正常工作,因为find_element_...
方法返回的是WebElement
对象,而不是对象列表。 您必须执行以下操作:
if len(browser.find_elements_by_xpath('//path')) == 0:
print ('failure')
请注意复数find_elements_...
用于查找复数返回列表中元素的函数,如果未找到任何内容,则列表长度为零。
顺便说一下, WebElement
对象上的size()
方法返回元素的渲染大小,即其在页面上的高度和宽度。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.