0

代码:

<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 元素。我需要使用 Cypress 编写 if else 语句。如果 li 元素在 h1 中有文本源并且标签有文本Completed,我需要单击该元素,否则跳过。

4

1 回答 1

0

我会尝试将 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)
    }
)
于 2020-11-05T13:31:03.330 回答