You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Selenium中捕获HTTP响应错误(如500状态码)并终止脚本或记录错误

Selenium捕获HTTP响应错误并终止脚本的实现方法

原生Selenium WebDriver本身没有直接提供读取HTTP响应状态码的内置接口,其设计核心聚焦于模拟终端用户的页面交互行为,而非网络层数据监听。但可以通过以下两种成熟方案实现你的需求:

方案1:使用Selenium 4+内置的DevTools协议支持(推荐)

Selenium 4.0及以上版本已经原生支持Chrome DevTools协议(CDP),可以直接监听所有网络请求的响应状态,触发错误时直接终止脚本。
以下是Python语言的示例代码:

from selenium import webdriver
import sys

# 初始化Chrome浏览器驱动
driver = webdriver.Chrome()
# 开启网络监听能力
driver.execute_cdp_cmd("Network.enable", {})

# 定义响应捕获回调函数
def response_listener(response):
    resp_data = response.get("response", {})
    status_code = resp_data.get("status", 200)
    req_url = resp_data.get("url", "")
    # 匹配4xx、5xx类错误状态码
    if status_code >= 400:
        print(f"捕获到HTTP错误:状态码 {status_code},请求地址:{req_url}")
        # 关闭浏览器后直接终止脚本
        driver.quit()
        sys.exit(1)

# 绑定响应监听器
driver.add_listener("Network.responseReceived", response_listener)

# 下方写入你原本的脚本业务逻辑
# driver.get("https://你的测试地址.com")
  • 优点:无需额外依赖其他工具,配置简单,全类型网络请求均可捕获
  • 注意:仅支持Selenium 4.0及以上版本,Chrome、Edge、Firefox等主流现代浏览器均兼容该方案

方案2:搭配本地代理工具实现(兼容旧版本Selenium)

如果使用的是Selenium 3及以下版本,可以在启动浏览器时配置本地代理,将所有浏览器流量转发到代理服务中,在代理层监听响应状态码。常用的代理工具包括BrowserMob Proxy、mitmproxy等,你可以在代理的响应回调逻辑中加入状态码判断,遇到错误时调用Selenium的退出接口终止脚本。

  • 优点:兼容所有Selenium版本,不受浏览器版本限制
  • 缺点:需要额外部署代理服务,配置流程相对繁琐

内容的提问来源于stack exchange,提问作者Abdurehman Siddiqui

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 21:39:03