Testcafe - 从请求负载中检索数据

Testcafe - retreive data from Request Payload

我需要使用 Testcafe 从 POST 调用中检索信息。

我需要手动做的是:

  1. 在 Chrome、
  2. 中打开开发人员工具
  3. 捕获流量并按特定请求名称过滤,
  4. 转到 Headers -> Request Payload

在请求负载中,我需要检查 isMode 的标志。

{timestamp: 9017205278, master: "s",…}
> ads: [{format: 19521, tag: "19521", target: "", isMode: false},…]
   > 0: {format: 19521, tag: "19521", target: "", isMode: false}
        format: 19521
        isMode: false
   > 1: {format: 19522, tag: "19522", target: "", isMode: true}
> appName: ""
> master: "s"
> screen: {height: 1080, width: 1920}
> timestamp: 9017205278

我可以使用此方法从请求中获取信息 https://devexpress.github.io/testcafe/documentation/guides/advanced-guides/intercept-http-requests.html#log-http-requests

但老实说,我不知道如何像上面这个例子那样检索信息。

好的,我终于能够解决这个问题并检索到这些数据。

首先,我必须创建新的 RequestLogger,我在其中检查我是否需要日志请求正文并且我想将其存储在字符串中,而不是作为缓冲区。

const headerLogger = RequestLogger(RegExp('call$'), {
    logRequestHeaders: true,
    logRequestBody: true,
    stringifyRequestBody: true,
});

然后我将对象更改为字符串,因为这样更容易检查日志是否包含特定字符串。

const requestPayloadString : string = headerLogger.requests[0].request.body.toString();

最后,我的断言是这样的。我比较实际字符串是否包含预期字符串。

await t.expect(requestPayload).contains(`{format: 19522, tag: "19522", target: "", isMode: true}`)