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

使用wdio intercept service时browser.getRequest无法获取数据求助

解决wdio-intercept-service捕获不到请求返回空数组的问题

你的代码存在两个核心问题,导致无法捕获到目标请求:

1. 未初始化请求拦截器

wdio-intercept-service需要先调用browser.setupInterceptor()启动网络请求监听,否则后续的expectRequest和getRequest都无法捕获任何请求。这个步骤必须在加载页面或触发请求之前执行。

2. 请求监听的顺序错误

你是先触发了搜索请求(输入"mobile"),再调用expectRequest,此时请求已经发送完成,拦截器来不及捕获。正确的顺序应该是先设置请求预期,再触发请求。

另外,使用完整URL匹配请求时容易因为查询参数、域名差异等问题导致匹配失败,改用正则表达式匹配路径部分会更可靠。

修正后的代码

it("test a", async () => {
    // 先启动请求拦截器
    await browser.setupInterceptor();
    
    await browser.url("https://www.amazon.in/")

    const input = await $("#twotabsearchtextbox")
    
    // 先设置请求预期,再触发搜索请求
    await browser.expectRequest("GET", /\/api\/2017\/suggestions/, 200)
    
    await input.setValue("mobile")
    await browser.pause(3000)

    // 用正则匹配请求路径,避免精确URL匹配的问题
    const searchSuggestions = await browser.getRequest(
        "GET",
        /\/api\/2017\/suggestions/
    )

    console.log("Captured requests:", searchSuggestions)
    expect(searchSuggestions).to.have.length.above(0)
})

额外检查项

  • 确认wdio-intercept-service与你的WebdriverIO版本兼容,可查看package.json中的依赖版本是否匹配官方要求。
  • 确保测试使用的是支持Chrome DevTools Protocol的浏览器(如Chrome、Edge),该服务依赖CDP实现网络拦截。
  • 如果请求带有动态参数(如时间戳、随机ID),正则表达式要避开这些动态部分,只匹配固定的路径结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 12:55:18