首页 > 解决方案 > 在 cypress 测试场景中创建 if 语句

问题描述

我很想在我的登录测试中添加一个 if 语句,因为可以加载两个登录页面。下面的测试在找不到文本“不是您的帐户?”时失败,此时它应该继续登录步骤。我认为这是因为两个登录页面都具有相同的元素“a.auth0-lock-alternative-link”,但包含不同的文本。

如何在测试中创建 if 语句来满足这两种情况?

describe('My Login Test2', function (){
it('Visit Risk App Landing Page', function (){
cy.visit('https://bvt-riskassessment.lmkcloud.net')
cy.get('button').click()
if(cy.get('a.auth0-lock-alternative-link').contains('Not your account?'))
{
cy.get('a.auth0-lock-alternative-link').contains('Not your account?').click();
}
cy.fixture('loginUser').as('myUserFixture');
cy.get('@myUserFixture').then(user => {
cy.get('input.auth0-lock-input').first().type(user.email);
cy.get('input.auth0-lock-input').last().type(user.password);
cy.get('button').click()
cy.url().should('eq','https://bvt-riskassessment.lmkcloud.net/workflow')
})
})
})

标签: if-statementtestingcypress

解决方案


您可以使用 each 函数来迭代项目,然后检查那里的文本内容。通过使用 cy.wrap 包装元素,您可以使用正常的 cypress 函数。

更多信息:https ://docs.cypress.io/api/commands/each.html#DOM-Elements

 cy.get('a.auth0-lock-alternative-link')
    .each(($elm) => {
      cy.wrap($elm).invoke('text').then((text) => {
        if (text === "Not your account?") {
          // do somthing
        } 
      })
    })

推荐阅读