if-statement - 在 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')
})
})
})
解决方案
您可以使用 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
}
})
})
推荐阅读
- javascript - 带有隐式空值的 Ramda Curry
- javascript - 我不断收到此错误 Objects are not valid as a React child {} 如果您要呈现子集合,请改用数组
- javascript - 如何解决“无法读取未定义的属性‘定义’”?
- docker - Circle CI - 无法使用 Docker Compose 连接到 Redis 或 memcached,但我可以在本地计算机上这样做
- javascript - 同一页面上的多个网格的数据项选择未定义
- internationalization - google-libphonenumber 包不验证本地格式的中文电话号码
- java - BasicAuthenticationEntryPoint 未返回 WWW-Authenticate 标头
- r - 在 R 中使用 DBI 更新
- typescript - “对象属于‘未知’类型。” 在 RxJS 动作中
- php - Laravel 8 组件 @props 指令不起作用