【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

在给出的引用中,涉及到 `selenium.common.exceptions.NoSuchElementException` 和 `selenium.common.exceptions.NoSuchAttributeException` 两种以 `selenium.common.exceptions.nos` 相关的异常。 ### selenium.common.exceptions.NoSuchElementException 此异常表示使用给定的搜索参数在页面上无法定位到元素。解决此问题可以从以下几个方面入手: - **等待元素加载**:页面元素可能需要一些时间来加载,使用显式等待可以确保在元素出现后再进行操作。 ```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() driver.get("http://example.com") try: element = WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.ID, "element_id")) ) # 对元素进行操作 element.click() except Exception as e: print(f"Error: {e}") finally: driver.quit() ``` - **检查定位方式和定位表达式**:确保使用的定位方式(如 `ID`、`CLASS_NAME`、`XPATH` 等)和定位表达式是正确的。可以使用浏览器的开发者工具来验证定位表达式是否能准确找到目标元素。 - **检查元素是否在 iframe 中**:如果元素位于 iframe 中,需要先切换到该 iframe 才能定位其中的元素。 ```python # 切换到 iframe iframe = driver.find_element(By.ID, "iframe_id") driver.switch_to.frame(iframe) # 定位 iframe 中的元素 element = driver.find_element(By.ID, "element_id") # 切换回默认内容 driver.switch_to.default_content() ``` ### selenium.common.exceptions.NoSuchAttributeException 此异常表示尝试访问元素不存在的属性。解决办法是在访问元素属性之前,先检查该属性是否存在。 ```python from selenium import webdriver driver = webdriver.Chrome() driver.get("http://example.com") element = driver.find_element(By.ID, "element_id") if element.get_attribute("attribute_name"): value = element.get_attribute("attribute_name") print(value) else: print("Attribute does not exist.") driver.quit() ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值