【Python】selenium的异常类selenium.common.exceptions的汇总

我们在使用selenium爬虫的过程中,可能会遇到各种报错,例如:
在这里插入图片描述

这些报错是selenium.common.exceptions 是 Selenium WebDriver 库中的一个模块,它包含了 WebDriver 操作中可能遇到的各种异常类。这些异常类帮助开发者在自动化测试过程中识别和处理特定的错误情况。

以下是一些常见的网页获取是会遇到的异常报错:

  1. NoSuchElementException: 当尝试查找一个不存在的元素时抛出,可能driver控制的网页已经发生跳转,而原先的网页元素已经无法抓取到了。
    详细参考:【Python】selenium使用find_element时解决【NoSuchElementException】问题的方法

  2. NoSuchFrameException: 当尝试切换到一个不存在的框架时抛出。

  3. NoSuchWindowException: 当尝试切换到一个不存在的窗口时抛出。
    详细参考:【Python】selenium使用find_element时解决【NoSuchWindowException】问题的方法

  4. NoSuchAttributeException:属性错误

  5. NoAlertPresentException:没找到alert弹出框

  6. StaleElementReferenceException: 当尝试操作一个已经过时(比如页面已经刷新)的元素时抛出。也就是页面元素过期了,无法引用元素,还在无法点击它,比如页面已经刷新或导航到另一个页面,但是尝试操作的元素引用仍然是旧页面上的元素。
    详细参考:【Python】selenium使用find_element时解决【StaleElementReferenceException】问题的方法

  7. ElementNotVisibleException: 当尝试操作一个不可见的元素时抛出。

  8. ElementNotSelectableException: 当尝试选择一个不可选择的元素时抛出。

  9. ElementClickInterceptedException:当尝试点击一个元素时,如果有另一个元素覆盖在它上面,导致点击事件被拦截,就会抛出这个异常。
    详细参考:【Python】selenium 点击某个按钮 click() 出现的报错问题–ElementClickInterceptedException(全!)

  10. ElementNotVisibleException:当尝试点击一个不在屏幕上可见的元素时,会抛出这个异常。

  11. ElementNotInteractableException:当尝试与一个不可交互的元素进行交互(例如,一个被禁用的按钮或一个隐藏的输入框)时,会抛出这个异常。

  12. InvalidElementStateException: 当元素处于一个无效状态,不能执行期望的操作时抛出。

  13. InvalidSelectorException: 当使用无效的选择器查找元素时抛出。

  14. TimeoutException: 当操作超出了设定的等待时间限制时抛出。

13 . WebDriverException: 所有 WebDriver 异常的基类。

在编写测试代码时,可以通过try except 来捕获这些异常来处理错误情况,可以重试操作、记录错误信息或者终止测试等等。
如果大家对 selenium.common.exceptions 感兴趣,也可以进入exceptions 查看底层代码的解释,总共有30+个错误类,以上只是列举了比较常用的部分。
感谢你的喜欢,整理不易,大家可以点个小小的关注~

参考:

  1. Selenium2+python自动化57-捕获异常(NoSuchElementException)【转载】
  2. 如果对其他错误感兴趣,可以看 :全网最强总结,Selenium自动化测试异常+处理总结,吐血整理…
  • 11
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
selenium.common.exceptions.TimeoutException: Message是Selenium中的一个常见异常,它表示在指定的时间内无法找到元素或执行某个操作。这个异常通常发生在页面加载时间过长或元素定位失败的情况下。 以下是处理selenium.common.exceptions.TimeoutException: Message的一些方法和示例: 1. 使用显式等待: ```python from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC driver = webdriver.Chrome() wait = WebDriverWait(driver, 10) # 设置等待时间为10秒 try: element = wait.until(EC.presence_of_element_located((By.ID, 'element_id'))) # 执行需要的操作 except selenium.common.exceptions.TimeoutException: print("元素定位超时") finally: driver.quit() ``` 2. 使用隐式等待: ```python from selenium import webdriver driver = webdriver.Chrome() driver.implicitly_wait(10) # 设置隐式等待时间为10秒 try: element = driver.find_element_by_id('element_id') # 执行需要的操作 except selenium.common.exceptions.TimeoutException: print("元素定位超时") finally: driver.quit() ``` 3. 检查页面加载状态: ```python from selenium import webdriver driver = webdriver.Chrome() driver.set_page_load_timeout(10) # 设置页面加载超时时间为10秒 try: driver.get('https://example.com') # 执行需要的操作 except selenium.common.exceptions.TimeoutException: print("页面加载超时") finally: driver.quit() ``` 这些方法可以帮助您处理selenium.common.exceptions.TimeoutException: Message异常。您可以根据具体情况选择适合您的方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值