Возвращать "NameError" вместо "Pass", когда не удается найти элемент

Я использую 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 ответа

Решение

Ошибка в том, что вы устанавливаете элемент только в части try. Либо установить 'element' вне try-except or in except,

Пример:

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

В соответствии с try {} блок в вашем блоке кода, когда элемент отсутствует, исключение:

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
Другие вопросы по тегам