【问题标题】:Cypress click on set of elements but not loop forever赛普拉斯点击一组元素但不会永远循环
【发布时间】:2021-09-09 06:44:07
【问题描述】:

我有几个地方需要点击一些元素,但我不希望它循环播放。感觉答案就在眼前,却找不到合适的解决方案。

这是一个代码示例,它现在陷入了一个永远的循环:

for(let n = 1; n <= 19; n++){
        cy.get('li.active > .nav > :nth-child(n) > a').click({multiple: true})
        cy.wait(400)
    }

我有 19 个元素,它们都是相同的,只是编号为 1-19,我只想让测试点击它们,等待它显示页面,然后点击下一个。


回答

            cy.get('#side-menu > :nth-child(2) > a').click()
        cy.wait(400)
        cy.get('li.active > .nav').each(($ele) => {
  cy.wrap($ele).find('a').click({multiple:true})
})

还处理了我的另一个 for 循环,该循环永远持续下去并且永远不会停止,除非像这个原始问题一样手动停止,并将其替换为 each()

    cy.get('#side-menu > li > a').each(($ele) => {
        cy.wrap($ele).click({multiple:true})
        })
    ```

【问题讨论】:

    标签: javascript for-loop cypress


    【解决方案1】:

    您可以使用each() 循环来遍历您的元素并一一点击按钮 -

    cy.get('li.active > .nav').each(($ele) = > {
      cy.wrap($ele).find('a').click()
    })
    

    【讨论】:

      【解决方案2】:

      如果您的页面每次点击都会刷新,您将无法使用 Cypress .each(),因为您会收到“与 DOM 分离”错误。

      尝试递归函数

      it('tests the nav buttons', () => {
      
        function clickNav(buttonNum) {
          if (buttonNum === 20) return   // finished
          cy.get('li.active > .nav > :nth-child(n) > a').click()
          cy.wait(400)
          clickNav(++buttonNum)   // next
        }
      
        clickNav(1)
      })
      

      但其他事情正在发生,从技术上讲,您的循环也应该可以工作。

      【讨论】:

        【解决方案3】:

        感谢您的解决方案 - Alpan 就是这样工作的:

                    cy.get('#side-menu > :nth-child(2) > a').click()
                cy.wait(400)
                cy.get('li.active > .nav').each(($ele) => {
          cy.wrap($ele).find('a').click({multiple:true})
        })
        

        忘了我必须通过第 n 个子项单击打开下拉菜单,然后在 each() 中的单击中添加 {multiple:true}

        【讨论】:

          猜你喜欢
          • 2021-06-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-12-17
          • 2022-12-19
          • 2022-01-19
          • 2020-07-02
          • 2022-01-26
          相关资源
          最近更新 更多