如果元素不存在,则继续执行操作直到元素确实存在

时间:2019-05-17 14:15:30

标签: cypress

我是赛普拉斯的新手,我一直致力于开发一些选项来展示针对特定类型的工作进行UI自动化测试的最佳方法。该测试需要从顶层向下钻取一个地图,并且一直向下钻取直到显示一个按钮。按钮可见后,应按下该按钮以继续工作流程的下一部分

我正在使用赛普拉斯(cypress)进行测试,并仔细阅读了所有文档,并研究了答案,以查看是否有人事先做过并使其正常工作。没有运气

我尝试了几件事,例如

if(cy.get('span[class="mat-button-wrapper"]').contains("Reserve").should('not.be.visible')){
                flag = false
                cy.get('span[class="mat-button-wrapper"]').contains("Reserve").click()
            }
            else{
                flag = true
                cy.wait(100)
            }

以及类似

cy.get('span[class="mat-button-wrapper"]').contains("Reserve").should('be.visible').then((button)=> {

                 if(button){
                     cy.get('span[class="mat-button-wrapper"]').contains("Reserve").click()
                     flag = true
                 }
             })

我想做的就是有条件地检查按钮是否存在,是否确实单击了按钮,否则继续while循环

1 个答案:

答案 0 :(得分:0)

兄弟 您可以尝试使用此代码。

cy.get('span')
  .should(($span) => {
    expect($span).to.have.length(1)

    const className = $span[0].className

    expect(className).to.match(/mat-button-wrapper/)
  })
  .then(...)


Cypress将自动重试should回调函数,直到它通过或命令超时为止。

赛普拉斯doc:cypress should callback