Cypress条件语句未按预期工作

Cypress条件语句未按预期工作,cypress,cypress-cucumber-preprocessor,Cypress,Cypress Cucumber Preprocessor,代码: 源完成源失败新测试完成 上下文:我在ul中有这样的代码,我有几个li元素。我需要用Cypress写一个if-else语句。如果li元素在h1中有文本源,label有文本已完成,我需要单击该元素,否则跳过。我将尝试将li元素的内容转换为字符串,并根据该内容执行条件语句: <ul> <li> <h1>source</h1> <label>completed</label> </li> <li>

代码:

  • 源完成
  • 源失败
  • 新测试完成

上下文:我在ul中有这样的代码,我有几个li元素。我需要用Cypress写一个if-else语句。如果li元素在h1中有文本源,label有文本
已完成
,我需要单击该元素,否则跳过。

我将尝试将li元素的内容转换为字符串,并根据该内容执行条件语句:

<ul> <li> <h1>source</h1> <label>completed</label> </li> <li> <h1>source</h1> <label>Failed</label> </li> <li> <h1>new test</h1> <label>completed</label> </li> </ul>

编辑2:如果有多个元素是有效的,并且您被困在一个循环中,那么递归更好

cy.get('li')
    .each($element => {
        if($element.innerHtml().includes("source") && $element.innerHtml().includes("completed")) {
            $element.click()
        }
    })
cy.get('li'))
。然后(元素=>{
设i=0
功能检查元素单击(数组元素){
如果(i>=ArrayOfelments.length){
返回
}
cy.get(arrayofelments[i])
。然后($element=>{
如果($element.html()包括(“源”)&&
$element.html()包括(“源”)&&
i
请发布您尝试的代码片段以及您收到的错误。
  • 源代码已完成
  • 源代码失败
  • 新测试已完成
如果有多个元素与上述情况下的条件相匹配,如何在找到第一个匹配后中断循环第2部分再次与最终工作VersionTanks Rosen。您提供的逻辑运行良好。我已经测试了所有可能的场景,运行良好。非常感谢你。
cy.get('li')
.then(elements => {
        let i = 0

        function checkElementsAdnClick(arrayOfElements) {
            if (i >= arrayOfElements.length) {
                return
            }
            cy.get(arrayOfElements[i])
                .then($element => {
                    if ($element.html().includes("source") &&
                        $element.html().includes("source") &&
                        i < arrayOfElements.length
                    ) {
                        return arrayOfElements[i].click()
                    } else {
                        i++
                        return checkElementsAdnClick(arrayOfElements)
                    }
                })
        }

        checkElementsAdnClick(elements)
    }
)