我刚刚开始考虑使用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()之类的东西。
有没有人有任何想法或指出我正确的方向?我对此很陌生。
干杯
答案 0 :(得分:1)
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')
。