Возвращать "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