我需要测试是否在网络流量中看到正确的查询参数(chrome>开发人员工具>网络选项卡)。我发现了这篇文章:Get HTTP requests (performance logs) from chromedriver with protractor似乎就是我想要的。
但是,当我将日志写入外部文件并检查是否可以看到要过滤以进行验证的URls时,我无法找到URL。可能发生了两件事 1) Network.responseReceived 仅获得GET调用,而我想要的方法则没有任何方法。 2)loggingPrefs实际上不是实现此目的的正确方法吗?
如果我朝着正确的方向前进或将我指向正确的方向,有人可以帮助我理解。我的情况是这样的: 1)启用记录首选项 2)过滤出分析网址 3)验证查询参数。
这是我放在黄瓜钩子上的代码
After(async function(scenario) {
console.log("After Hook");
if (scenario.result.status === Status.FAILED) {
// screenShot is a base-64 encoded PNG
const screenShot = await browser.takeScreenshot();
this.attach(screenShot, "image/png");
}
await console.log("After if");
let browseLogs = await browser.manage().logs().get('performance');
browseLogs.forEach(async (logE)=> {
//await console.log("inside if 2");
//await browser.sleep(3000);
var message = await JSON.parse(logE.message).message;
//await browser.sleep(6000);
if(message.method == 'Network.responseReceived'){
//await console.log(message);
//await fs.writeFileSync(logs, message);
await fs.appendFile(logs, JSON.stringify(message), (err) => {
if(err) throw err;
console.log('saved');
});
}
});
});
在我的测试用例中,我导航到该页面,当测试用例越过黄瓜挂钩时,该方法会自动触发该方法以将日志转储到文本文件中。
注意:使用Selenium中的“ LoggingPreferences” API可以在Selenium-Java框架中轻松实现,我需要在我的量角器类型脚本黄瓜框架中实现它。任何帮助表示赞赏!