如何使用Cypress.io检查和查询出站网络请求?

时间:2018-06-26 19:44:27

标签: browser e2e-testing cypress

我正在尝试加载页面,然后我想使用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是否支持该用例?谢谢。

2 个答案:

答案 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

enter image description here

控制台将向您显示整个XMLHttpRequest,您可以在其中单击以查看URL或请求和响应的其他属性:

enter image description here

答案 1 :(得分:1)

在赛普拉斯github页面上提出问题后,我能够解决我的问题。

根据赛普拉斯文档,启动cy.server(),然后调用路由,但将实际的正则表达式模式传递给url参数(未记录)。我不知道文档中显示的字符串glob版本出了什么问题,但是实际的正则表达式模式导致路由被触发。

cy.server();

cy.route({
  url: /gampad\/ads\?/,
  onRequest: (req) => {
     debugger;
     // Do checks here.
  }
});