在赛普拉斯中,有没有一种方法可以根据每日消息来避免故障?

时间:2019-10-03 01:08:14

标签: javascript cypress

我正在使用Cypress开发一种测试工具,用于当前处于活动状态的网页。问题是有时我会得到一个模态,显示新功能,事件等。这会破坏其余的测试。

我已经尝试过在登录后立即关闭模式(这是以前的测试之一),但是这导致登录测试失败。我想知道是否有一种方法可以使测试忽略下面代码中的最后2条指令,无论它们是否可见。

   it('Visits habitica and logins correctly', function () {
        cy.visit('https://habitica.com/login')
        cy.get('form').find('input[id="usernameInput"]').click().type("username")
        cy.get('form').find('input[id="passwordInput"]').click().type("password")
        cy.get('.btn-info').click() 
        cy.get('.modal-dialog').find('button[class="btn btn-warning"]').click()
        cy.get('.start-day').find('button').click({force:true})
    })

1 个答案:

答案 0 :(得分:0)

是浏览器模式还是您的团队开发的模式?在第一种情况下,赛普拉斯应自动接受模态。在第二种情况下,您可以通过仅在可见时接受它来解决它。您可以通过将其添加到脚本中来实现:

cy.get('body').then($body => {
  if ($body.find('IDENTIFIER_FOR_THE_MODAL').length === 1) {
    cy.get('IDENTIFIER_TO_CLOSE_THE_MODAL')
      .click()
  }
})

它在主体内搜索模态(当然,您必须将IDENTIFIER_FOR_THE_MODAL更改为正确的标识符)。如果确实找到模态,脚本将搜索IDENTIFIER_TO_CLOSE_THE_MODAL以关闭模态并单击。

可能的情况下,关闭模式的动作必须与您的情况稍有不同,但是语法会起作用。