【问题标题】:While loop element state cypressWhile 循环元素状态 cypress
【发布时间】:2020-07-08 11:21:42
【问题描述】:

我有一个问题,我想点击一个按钮直到它消失,但次数可能会有所不同,所以我想检查可见性状态,而可见 = 真点击按钮,当可见 = 假结束测试但问题是我不知道如何将所有链从获取元素循环到最后。它单击一次按钮并由于中断而停止;如果我删除了中断,它甚至不会单击它永远循环,主要问题是它第一次通过链时值是真实的,但它不会重复

cy.get('[idElem]')
      .then($isVisible => {
        return $isVisible.is(':visible');
      })
      .then(value => {
        while (value === true) {
          cy.get('[idElem]').click();
          break;
        }
      });

【问题讨论】:

    标签: javascript ui-automation cypress


    【解决方案1】:

    由于 cypress 的异步特性,您不能在 cypress 中使用 while/for 循环。在再次开始循环之前,赛普拉斯不会等待循环中的所有内容完成。但是,您可以改为使用递归函数,并等待一切完成,然后再调用方法/函数。

    所以你可以做这样的事情,它会工作:

    clickVisibleButton = () => {
            cy.get( 'body' ).then( $mainContainer => {
                const isVisible = $mainContainer.find( '#idOfElement' ).is( ':visible' );
                if ( isVisible ) {
                    cy.get( '#idOfElement' ).click();
                    this.clickVisibleButton();
                }
            } );
        }
    

    然后显然在您的测试中调用this.clickVisibleButton()。我使用的是打字稿,这个方法是在一个类中设置的,但你也可以把它作为一个常规函数来做。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-04-07
      • 2011-05-03
      • 1970-01-01
      • 2021-06-16
      • 2022-09-23
      • 2018-03-29
      • 2017-10-28
      相关资源
      最近更新 更多