首页 > 解决方案 > Puppeteer 拦截请求并在 json 中响应

问题描述

因此,puppeteer 提供了非常基本的示例,用于拦截对图片 url 的请求,并使用不同的 url 响应不同的图片。他们的文档中的示例: https ://github.com/webdriverio/webdriverio/tree/master/packages/devtools

我的问题是我试图拦截一个 XHR 请求并用我自己的 json 响应。我似乎找不到这方面的文档。如果有人可以分享更多关于此的文档,那就太好了。或者提供这方面的例子。

我希望能够基于 GET 或 POST 请求等 http 方法进行拦截。并基于 URL 路径。能够使用通配符就好了/api/v1/foo/:id ,它会识别:id出通配符并且可以接受那里的任何东西。

然后能够以 200 的状态和自定义的 json 响应进行响应。最终,我正在寻找那个。

我的猜测是这样的:

page.on('request', interceptedRequest => {
        if (interceptedRequest.url({method: POST, body: {<some json object>} } ).endsWith('/api/v1/foo/12345')) {
            return interceptedRequest.continue({
                status: 200,
                body: {some json object }
            })
        }

        interceptedRequest.continue()
    })

标签: google-chrome-devtoolspuppeteerwebdriver-io

解决方案


您可以使用Mockiavelli - 为 Puppeteer 请求模拟库。它可以根据方法和路径响应请求,并内置对路径参数(:param)的支持。它与 jest 和 jest-puppeteer 集成得最好,但适用于任何测试库。


推荐阅读