如何检查元素是否存在,以便在元素存在时执行某些步骤。如果元素不存在,则可以执行其他某些不同的步骤。
我尝试了以下类似的方法,但没有奏效:
Cypress.Commands.add('deleteSometheingFunction', () => {
cy.get('body').then($body => {
if ($body.find(selectors.ruleCard).length) {
let count = 0;
cy.get(selectors.ruleCard)
.each(() => count++)
.then(() => {
while (count-- > 0) {
cy.get('body')
// ...
// ...
}
});
}
});
});
我正在寻找一个简单的解决方案,它可以与简单的 javascript 结合
否则 block 或 那么() promise 部分
类似于 Webdriver 协议(protocol)的以下实现:
driver.findElements(By.yourLocator).size() > 0
好心提醒。谢谢
请您参考如下方法:
如果您决定通过检查 .length
来执行 if 条件,我将补充一点。 cy.find
的属性(property)命令,您需要尊重 cypress 的异步特性。
示例:
尽管存在 appDrawerOpener 按钮,但以下条件评估为 false
if (cy.find("button[data-cy=appDrawerOpener]").length > 0) //evaluates as false
但是这个评估为真,因为
$body
变量已在
.then()
中解析 promise 的一部分:
cy.get("body").then($body => {
if ($body.find("button[data-cy=appDrawerOpener]").length > 0) {
//evaluates as true
}
});
阅读更多
Cypress documentation on conditional testing