首页 > 解决方案 > 除了 NoSuchElementException 之外的硒在我的 python 脚本中不起作用

问题描述

我有一个非常简单的代码,我正在寻找一个类,当该类不存在时,我想捕捉它并更新我的 CSV 中的状态。我正在实现这个:

from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
import time

invalid = browser.find_element_by_class_name('_3lLzD')
try:
    Update status
except NoSuchElementException as e:
    Update Status

它仍然向我抛出错误:

Traceback (most recent call last):
  File "C:/Users/Krenovate/Desktop/automate/automate/automate.py", line 35, in <module>
    invalid = browser.find_element_by_class_name('_3lLzD')
  File "C:\Users\Krenovate\PycharmProjects\mxrecord\venv\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 564, in find_element_by_class_name
    return self.find_element(by=By.CLASS_NAME, value=name)
  File "C:\Users\Krenovate\PycharmProjects\mxrecord\venv\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 978, in find_element
    'value': value})['value']
  File "C:\Users\Krenovate\PycharmProjects\mxrecord\venv\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "C:\Users\Krenovate\PycharmProjects\mxrecord\venv\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: ._3lLzD

我究竟做错了什么

标签: pythonseleniumselenium-webdriver

解决方案


根据文档,定位器函数旨在在未找到时抛出异常。因此,您得到的异常完全符合预期的行为。

如果您不确定元素是否存在,最简单的方法是将其放在 try 块中

try:
    invalid = browser.find_element_by_class_name('_3lLzD')
    Update status
except NoSuchElementException as e:
    Update Status

或使用带有超时的显式等待。


推荐阅读