摩卡/茶-测试点击一个元素,如果它是'显示或存在

Mocha/Chai - Test to click an element only if it's present, displayed or exists

本文关键字:如果 存在 显示 元素 一个 测试点 摩卡      更新时间:2023-09-26

我刚刚开始考虑使用Mocha/Chai框架实现Selenium的测试&我正在努力与登录功能。我想检查一个项目是否存在/显示&

目前我的测试等待页面加载&我想要像下面这样的东西,目前还不能工作:

var elementOnPage = driver.findElement(By.('elementId')).isDisplayed();
//var elementOnPage = driver.findElement(By.('elementId')).exist;
if(elementOnPage == true){
  driver.findElement(By.('elementId')).click();
  }
else{
  driver.findElement(By.('anotherElement')).click();
  }

我也试过上面的注释行,但似乎都不起作用。代码似乎总是在继续之前击中if语句的第二部分。如果我要检查的元素存在,则测试执行下一行,但如果它不存在,则测试失败并显示"NoSuchElementError: No such element"。

我也没有意识到我可以使用像exists(), isPresent()或isElementPresent()这样的东西。

有没有人有什么想法或给我指出正确的方向?我对这事还不熟悉。

欢呼

isDisplayed的返回值是一个承诺,但您将其视为布尔值。

你需要这样做:

driver.findElement(By.id('elementId')).isDisplayed().then(function (displayed) {
    if (displayed) {
        driver.findElement(By.id('elementId')).click();
    }
    else{
        driver.findElement(By.id('anotherElement')).click();
    }
});

或者更简洁地说:

driver.findElement(By.id('elementId')).isDisplayed().then(function (displayed) {
    driver.findElement(By.id(displayed ? 'elementId' : 'anotherElement')).click();
});

顺便说一下,By.('elementId')不能工作。我以为你指的是By.id('elementId')