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

如何用WebdriverIO的wdio-intercept-service捕获全部API请求?

解决wdio-intercept-service无法捕获指定API的问题

wdio-intercept-service完全支持捕获自定义API,你遇到的问题大概率是使用方式或配置不当导致的,以下是几个排查方向:

1. 确保拦截器在API调用前初始化

必须在触发提交操作之前启动请求拦截,否则后续发起的API不会被记录:

// 先初始化拦截器
browser.setupInterceptor();
// 再执行点击提交操作
$('button[type="submit"]').click();
// 最后获取请求
const requests = browser.getRequests({ includePending: true });

2. 检查是否需要开启Fetch请求拦截

wdio-intercept-service默认仅拦截XMLHttpRequest请求,如果getPNR和fulfilPNR是通过Fetch API发送的,需要在wdio配置文件中开启Fetch拦截:
在wdio.conf.js的services配置中添加:

services: [
    ['intercept', {
        fetch: true // 开启Fetch请求拦截
    }]
]

3. 增加请求等待逻辑

即使使用includePending: true,点击提交后API请求可能还未发起,需要添加等待确保请求已触发:

$('button[type="submit"]').click();
// 等待至少3个请求出现,超时时间设为5秒
browser.waitUntil(
    () => browser.getRequests({ includePending: true }).length >= 3,
    { timeout: 5000, timeoutMsg: '未捕获到足够的API请求' }
);
const requests = browser.getRequests({ includePending: true });

4. 排查版本兼容性问题

你使用的4.3.1版本可能存在特定场景下的拦截bug,比如对Fetch请求的支持不完善。可以尝试升级到该库的最新稳定版,或者查看该版本的官方issue,确认是否有类似未捕获请求的已知问题。

5. 检查请求路径/域名是否被过滤

查看是否有自定义的过滤规则,导致getPNR和fulfilPNR请求被排除。可以打印所有捕获到的请求URL,确认目标API是否在列表中:

console.log('捕获到的请求URL:', requests.map(req => req.url));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 01:36:30