我们在使用selenium爬虫的过程中,可能会遇到各种报错,例如:
这些报错是selenium.common.exceptions
是 Selenium WebDriver 库中的一个模块,它包含了 WebDriver 操作中可能遇到的各种异常类。这些异常类帮助开发者在自动化测试过程中识别和处理特定的错误情况。
以下是一些常见的网页获取是会遇到的异常报错:
NoSuchElementException
: 当尝试查找一个不存在的元素时抛出,可能driver控制的网页已经发生跳转,而原先的网页元素已经无法抓取到了。
详细参考:【Python】selenium使用find_element时解决【NoSuchElementException】问题的方法
NoSuchFrameException
: 当尝试切换到一个不存在的框架时抛出。
NoSuchWindowException
: 当尝试切换到一个不存在的窗口时抛出。
详细参考:【Python】selenium使用find_element时解决【NoSuchWindowException】问题的方法
NoSuchAttributeException
:属性错误
NoAlertPresentException
:没找到alert弹出框
StaleElementReferenceException
: 当尝试操作一个已经过时(比如页面已经刷新)的元素时抛出。也就是页面元素过期了,无法引用元素,还在无法点击它,比如页面已经刷新或导航到另一个页面,但是尝试操作的元素引用仍然是旧页面上的元素。
详细参考:【Python】selenium使用find_element时解决【StaleElementReferenceException】问题的方法
ElementNotVisibleException
: 当尝试操作一个不可见的元素时抛出。
ElementNotSelectableException
: 当尝试选择一个不可选择的元素时抛出。
ElementClickInterceptedException
:当尝试点击一个元素时,如果有另一个元素覆盖在它上面,导致点击事件被拦截,就会抛出这个异常。
详细参考:【Python】selenium 点击某个按钮 click() 出现的报错问题–ElementClickInterceptedException(全!)
ElementNotVisibleException
:当尝试点击一个不在屏幕上可见的元素时,会抛出这个异常。
ElementNotInteractableException
:当尝试与一个不可交互的元素进行交互(例如,一个被禁用的按钮或一个隐藏的输入框)时,会抛出这个异常。
InvalidElementStateException
: 当元素处于一个无效状态,不能执行期望的操作时抛出。
InvalidSelectorException
: 当使用无效的选择器查找元素时抛出。
TimeoutException
: 当操作超出了设定的等待时间限制时抛出。13 .
WebDriverException
: 所有 WebDriver 异常的基类。
在编写测试代码时,可以通过try except
来捕获这些异常来处理错误情况,可以重试操作、记录错误信息或者终止测试等等。
如果大家对 selenium.common.exceptions 感兴趣,也可以进入exceptions 查看底层代码的解释,总共有30+个错误类,以上只是列举了比较常用的部分。
感谢你的喜欢,整理不易,大家可以点个小小的关注~
参考:
- Selenium2+python自动化57-捕获异常(NoSuchElementException)【转载】
- 如果对其他错误感兴趣,可以看 :全网最强总结,Selenium自动化测试异常+处理总结,吐血整理…