当我使用simpleLogger获取响应内容时,获取的信息是乱码

如何解决当我使用simpleLogger获取响应内容时,获取的信息是乱码

当我运行 testcafe 代码时,这一步的输出是乱码。:

for (let i = simpleLogger.requests.length - 1; i > 0; i--) { let url_test = simpleLogger.requests[i].request.url; if (url_test.indexOf("/gt/validate/") !== -1) { let res_json = simpleLogger.requests[i].response.body console.log(res_json); break; } }

然后我打开浏览器调试模式,发现每个页面请求的返回内容中都多出了一段js代码

/*hammerhead|script|start*/if (typeof window !== 'undefined' && window){window['hammerhead|process-dom-method'] && window['hammerhead|process-dom-method']();if (window.__get$ && typeof __get$ === 'undefined') {var __get$Loc = window.__get$Loc,__set$Loc = window.__set$Loc,__set$ = window.__set$,__get$ = window.__get$,__call$ = window.__call$,__get$Eval = window.__get$Eval,__proc$Script = window.__proc$Script,__proc$Html = window.__proc$Html,__get$PostMessage = window.__get$PostMessage,__get$ProxyUrl = window.__get$ProxyUrl,__rest$Array = window.__rest$Array,__rest$Object = window.__rest$Object;}} else {var __get$Loc = function(l){return l},__set$Loc = function(l,v){return l = v},__set$ = function(o,p,v){return o[p] = v},__get$ = function(o,p){return o[p]},__call$ = function(o,a){return o[p].apply(o,a)},__get$Eval = function(e){return e},__proc$Script = function(s){return s},__proc$Html = function(h){return h},__get$PostMessage = function(w,p){return arguments.length===1?w.postMessage:p},__get$ProxyUrl = function(u,d){return u},__rest$Array = function(a,i){return Array.prototype.slice.call(a,i)},__rest$Object = function(o,p){var k=Object.keys(o),n={};for(var i=0;i<k.length;++i)if(p.indexOf(k[i])<0)n[k[i]]=o[k[i]];return n};}/*hammerhead|script|processing-header-end*/ geetest_1610940527001({"theme_version": "1.2.4","clean": false,"so": 0,"mobile": true,"xpos": 0,"version": "6.0.9","ypos": 37,"gt": "53eb2795e892363b5a7e6c0df0ed74af","Feedback": "http://www.geetest.com/contact#report","id": "a738db9d4442c5fd0bcbe65865085aa96","benchmark": false,"gct_path": "/static/js/gct.1.0.0.js","type": "multilink","template": "","width": "100%","hide_delay": 800,"fullpage": false,"api_server": "http://g1-server-staging.kjy.gtapp.xyz/","challenge": "738db9d4442c5fd0bcbe65865085aa96g3","height": 160,"s": "7a69353a","https": false,"slice": "pictures/gt/d49a453dc/slice/8acfcf53c.png","bg": "pictures/gt/d49a453dc/bg/8acfcf53c.jpg","show_delay": 250,"logo": true,"i18n_labels": {"cancel": "\u53d6\u6d88","loading": "\u52a0\u8f7d\u4e2d...","fail": "\u8bf7\u6b63\u786e\u62fc\u5408\u56fe\u50cf","refresh": "\u5237\u65b0\u9a8c\u8bc1","close": "\u5173\u95ed\u9a8c\u8bc1","error": "\u8bf7\u91cd\u8bd5","Feedback": "\u5e2e\u52a9\u53cd\u9988","read_reversed": false,"tip": "\u8bf7\u5b8c\u6210\u4e0b\u65b9\u9a8c\u8bc1","voice": "\u89c6\u89c9\u969c\u788d","logo": "\u7531\u6781\u9a8c\u63d0\u4f9b\u6280\u672f\u652f\u6301","slide": "\u62d6\u52a8\u6ed1\u5757\u5b8c\u6210\u62fc\u56fe","success": "sec \u79d2\u7684\u901f\u5ea6\u8d85\u8fc7 score% \u7684\u7528\u6237","forbidden": "\u602a\u7269\u5403\u4e86\u62fc\u56fe\uff0c\u8bf7\u91cd\u8bd5"},"product": "embed","c": [12,58,98,36,43,95,62,15,12],"link": "","static_servers": ["static.geetest.com/","dn-staticdown.qBox.me/"],"fullbg": "pictures/gt/d49a453dc/d49a453dc.jpg","theme": "ant"}) /*hammerhead|script|end*/

我怎样才能通过simplelogger得到我想要的东西(锤头除外) 希望给个答复

解决方法

请查看以下文章: https://devexpress.github.io/testcafe/documentation/guides/advanced-guides/intercept-http-requests.html#log-http-requests

https://devexpress.github.io/testcafe/documentation/reference/test-api/requestlogger/constructor.html

您需要将 'logResponseBody: true' 参数传递给 RequestLogger 构造函数,如下所示:

const headerLogger = RequestLogger(/testcafe/,{
    logResponseBody: true
});

在这种情况下,body 将是 Buffer 类型,因此您需要将其转换为字符串。否则,您可以使用 stringifyResponseBody: true 参数自动转换它。

另请检查您的回复是否被压缩为 gzip。在这种情况下,您需要按照以下线程中的说明自行解压缩:

How to get the json response of a RequestLogger

https://github.com/DevExpress/testcafe/issues/3243

关于 /*hammerhead|script|start*/if (typeof window !== 'undefined' 部分。这是由 TestCafe 注入到测试页面的代码。它不会干扰您的请求,也不会被记录。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?