首页 > 解决方案 > 赛普拉斯:如何覆盖访问命令以在页面加载后始终尝试关闭弹出窗口?

问题描述

Cypress 覆盖:我想覆盖现有visit命令,使其仍按原样运行,但会在访问成功执行后尝试关闭弹出窗口。

弹出窗口是我们几乎无法控制的,它会在您登录后出现。看到我们绕过登录屏幕并以编程方式登录,我们将在导航到任何页面时看到弹出窗口。我目前的代码不足:

Cypress.Commands.overwrite('visit', (originalFn, url, options) => {
originalFn(url, options);

cy.get("body").then($body => {
  if ($body.find("[text='Got it']").length > 0) { 
     cy.contains("Got it", { matchCase: false }).click();
  }
});
});

谢谢

标签: javascriptcypress

解决方案


您可以通过覆盖cy.visit()命令来做到这一点。试试这个:

Cypress.Commands.overwrite('visit', (originalFn, url, options) => {
  originalFn(url, options);
  // make sure to add a return here!
  return cy.get('body').then($body => {
    if ($body.find("[text='Got it']").length > 0) {
      cy.contains('Got it', { matchCase: false }).click();
    }
  });
});

来源:https ://docs.cypress.io/api/cypress-api/custom-commands#Overwrite-visit-command


推荐阅读