gpt4 book ai didi

javascript - TestCafe requestHook 响应正文未提供文本

转载 作者:行者123 更新时间:2023-11-29 18:46:07 24 4
gpt4 key购买 nike

我正在尝试使用 TestCafe 的请求 Hook 来获取响应的主体。我能够记录请求的正文并且可以看到请求正文的 xml 没问题。对于响应,尽管我变得很笨拙。我想我遇到了某种 ssl 问题,但不确定。这看起来很奇怪,因为我收到了 200 状态代码,并且能够看到响应的 header 。如果它是一个 ssl 东西,我认为我应该看到标题。

无论如何这是我的代码自定义请求钩子(Hook)

import { RequestHook} from 'testcafe' 

export default class AdultHomeScreenHook extends RequestHook{

constructor(requestFilter:any, responceOptions:any){
super(requestFilter,responceOptions)
}

onRequest (event:any) {
console.log('========================')
console.log('Request Body')
let buf = event._requestContext.reqBody as Buffer
console.log(buf.toLocaleString())

}

onResponse (event:any) {
console.log('========================')
let buf = event.body as Buffer
console.log(event)
}
}

这是测试夹具的重要部分

import AdultHomeHook from '../requestHooks/adultHomeScreenHook'

let adultHomeHook = new AdultHomeHook({url:'https://url.com/login?language=en',
method:'post'},{ includeHeaders: true, includeBody: true })

fixture.only`Adult Home Screen
Tests`.page`localhost:8080`.requestHooks(adultHomeHook);

然后是启动 webapp 和开始测试的代码

const fs = require('fs');
const selfSigned = require('openssl-self-signed-certificate');

const createTestCafe = require('testcafe');
let testcafe = null;


var options = {
key: selfSigned.key,
cert: selfSigned.cert
};

createTestCafe('localhost', 1337, 1338, options)
.then(tc => {
testcafe = tc;
const runner = testcafe.createRunner();
return runner
.startApp('node scripts/run start', 45000)
.src([
'./testcafe/tests/testsAccountDetails.ts'
])
.browsers('chrome --allow-insecure-localhost')
.run({
selectorTimeout: 30000
});
})
.then(failedCount => {
console.log('Tests failed: ' + failedCount);
testcafe.close();
});

我已经为 ssl 选项对象尝试了几种不同的方法,尝试了一个自签名证书,还为 web 应用程序使用了该证书,还有很多其他方法都无济于事。

当我运行所有内容时,我能够按预期看到请求的主体

<device><type>web</type><deviceId>547564be-fd2d-6ea8-76db-77c1f3d05e3e</deviceId></device>

但是响应体不是这样的

U�Os�0��~n� ��锶3m��������$h�Z�=���{ﷇ��2��.۾���]I=�!/ylƴ�4p%��P�G�����~��0�jݧ�NUn��(���IQ�
=2�

我也可以看到请求和响应的 header 没问题

最佳答案

事实证明这根本不是 ssl 问题。来自服务器的响应正文以压缩格式出现。我不得不解压缩响应主体缓冲区,然后可以在解压缩的缓冲区上运行 .toString()

onResponse (event:any) {
console.log('========================')
let buf = event.body as Buffer
let unzippedBody = zlib.gunzipSync(buf) as Buffer
console.log(unzippedBody.toLocaleString())
}

关于javascript - TestCafe requestHook 响应正文未提供文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53841224/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com