返回' NameError'而不是' Pass'什么时候找不到元素

时间:2018-03-10 07:18:21

标签: python selenium nameerror nosuchelementexception

我正在使用Python Selenium。当我尝试这个时:

try:
    element = driver.find_element_by_xpath('--path--').text.encode('ascii','ignore')
except NoSuchElementException:
    pass


print element

但是,当元素不存在时,显示错误

NameError: name 'element' is not defined

..什么时候只能pass什么时候找不到元素。

2 个答案:

答案 0 :(得分:1)

错误是因为您只在try部件中设置元素。在'element'之外设置try-except or in except

<强>实施例

try:
    element = driver.find_element_by_xpath('--path--').text.encode('ascii','ignore')
except NoSuchElementException:
    element = None

答案 1 :(得分:0)

根据代码块中的try {}块,当元素不存在时,会引发 exception

element = driver.find_element_by_xpath('--path--').text.encode('ascii','ignore')

此处变量元素永远不会被初始化。

异常在catch {}块中处理,您只需将其传递给它:

except NoSuchElementException:
    pass

因此,当你尝试print()变量元素时向前推进,如下所示:

print element

您将 Python 错误视为:

NameError: name 'element' is not defined