赛普拉斯条件语句无法正常工作

问题描述

代码

<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>

上下文:我在ul中有这样的代码我有几个li元素。我需要使用赛普拉斯编写if if语句。如果li元素在h1中具有文本源,而label包含文本Completed,则需要单击该元素,否则跳过。

解决方法

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

cy.get('li')
    .each($element => {
        if($element.innerHtml().includes("source") && $element.innerHtml().includes("completed")) {
            $element.click()
        }
    })

编辑2:如果有多个有效元素,并且您陷入了循环-递归会更好

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)
    }
)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...