验证元素存在硒

时间:2014-10-19 16:35:05

标签: python python-2.7 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方法系列抛出异常。我不明白为什么这些都不起作用。但如果有人能给我一个解释和一个工作的例子我会非常感激。

1 个答案:

答案 0 :(得分:2)

如果元素丢失,您的第一个代码段应该引发NoSuchElementException。如果它不这样做,那么从你的问题中的信息不清楚为什么会这样。 (或者也许你希望它找不到一个元素,但 找到一个元素?)

第二个代码段无法正常工作,因为find_element_...方法返回WebElement个对象,而不是对象列表。你必须这样做:

if len(browser.find_elements_by_xpath('//path')) == 0:
    print ('failure')

注意复数find_elements_...用于查找复数返回列表中的元素的函数,如果它们找不到任何内容,则列表的长度为零。

顺便说一句,size()对象上的WebElement方法返回元素的渲染大小,即页面上的高度和宽度。