我正在尝试加载页面,然后我想使用Cypress.io检查与https://securepubads.g.doubleclick.net/gampad/ads?*
匹配的网络请求,并为该请求查看特定的查询参数(通常至少有2个或更多)这样的请求)。在Chrome中,如果我想手动检查页面的网络请求,则只需转到Chrome开发工具中的“网络”标签,然后检查这些请求。在另一个半相关的SO问题(Check outgoing browser network calls using Cypress.io)中,我被告知我应该可以使用
cy.route({
url: '',
onRequest: (req) => {
// Some code in here
}
});
自动执行此操作。但是,当我使用cy.server()设置此cy.route()示例时,在此回调执行过程中看不到任何东西。到https://securepubads.g.doubleclick.net/gampad/ads?*
的路由已选中,但我发现在Chrome开发工具的网络标签中,对https://securepubads.g.doubleclick.net/gampad/ads?*
的调用之一返回了400。如果我正常访问该页面,则不会看到此400错误。
似乎cy.route是用于存根请求和响应的。我不需要存根任何请求或响应。我只想查看和查询发出的网络请求,而无需修改它们,就像Chrome开发工具可以自动执行一样。 Cypress.io是否支持该用例?谢谢。
答案 0 :(得分:2)
您还可以使用cy.wait()
来检查与cy.route()
匹配的请求的查询参数。像这样:
cy.route("https://securepubads.g.doubleclick.net/gampad/ads?*")
.as("myAds");
cy.wait(@myAds)
.then(request => {
expect(request.url).to.match(/\?param1=true/);
});
此外,如果您只想手动查看查询参数,则可以单击WAIT
:
控制台将向您显示整个XMLHttpRequest,您可以在其中单击以查看URL或请求和响应的其他属性:
答案 1 :(得分:1)
在赛普拉斯github页面上提出问题后,我能够解决我的问题。
根据赛普拉斯文档,启动cy.server(),然后调用路由,但将实际的正则表达式模式传递给url参数(未记录)。我不知道文档中显示的字符串glob版本出了什么问题,但是实际的正则表达式模式导致路由被触发。
cy.server();
cy.route({
url: /gampad\/ads\?/,
onRequest: (req) => {
debugger;
// Do checks here.
}
});