2014-10-19 77 views
0

我知道这个问题已经在之前的一些迭代中被询问过了。但即使在查看API后,我也无法弄清楚如何做到这一点。验证元素是否存在硒

我想凑在Web上的数据,我有以下代码:

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称尺寸()是WebElement可调用的函数和例外是由find抛方法家族。我不明白为什么这些工作都没有。但如果有人能给我一个解释和一个工作的例子,我将不胜感激。

回答

2

如果元素缺失,您的第一个代码片段应该提高NoSuchElementException。如果它不这样做,那么你的问题中的信息为什么是这样。 (也许你希望它没有找到一个元素,但它确实找到一个?)

第2段不能正常工作,因为find_element_...方法返回WebElement对象,而不是对象的名单。你必须做的事:

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

注意复数find_elements_...的功能来寻找与复数返回列表的元素,如果他们没有找到任何列表的长度是零。

顺便说一下,对象上的size()方法返回元素的呈现大小,即它在页面上的高度和宽度。