Cypress:如何覆盖访问命令,以便在页面加载后始终尝试关闭弹出窗口?

mck*_*zit 1 javascript cypress

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();
  }
});
});
Run Code Online (Sandbox Code Playgroud)

谢谢

Jak*_*cha 5

您可以通过覆盖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();
    }
  });
});
Run Code Online (Sandbox Code Playgroud)

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