【问题标题】:verify element existence selenium验证元素存在硒
【发布时间】:2014-10-19 16:35:05
【问题描述】:

我知道这个问题在之前的一些迭代中被问过。但是即使在查看 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 系列方法引发的。我不明白为什么这些都不起作用。但是,如果有人能给我一个解释和一个可行的例子,我将不胜感激。

【问题讨论】:

    标签: python python-2.7 selenium


    【解决方案1】:

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

    第二个 sn-p 无法工作,因为 find_element_... 方法返回 WebElement 对象,而不是对象列表。你必须这样做:

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

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

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

    【讨论】:

      猜你喜欢
      • 2018-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多