摩卡/茶-测试点击一个元素,如果它是'显示或存在
Mocha/Chai - Test to click an element only if it's present, displayed or exists
我刚刚开始考虑使用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')
相关文章:
- 一个密码测试程序,如果存在空格,它会提醒用户
- 从一个数组中移除字符串(如果存在于另一个数组)
- underline-js:将键对象与数组键对象进行比较,如果存在,则移除现有的添加新的
- 如果存在特定类,请不要添加类
- Shopify Liquid:如果存在价格比较,如何仅显示产品变体的价格比较
- 仅JavaScript-删除某些类(如果存在)
- jQuery脚本,它搜索现有的查询参数并且不添加“"如果存在
- jQuery-检查外部页面上是否存在DIV,如果存在,则加载DIV,否则加载另一个
- 如果存在event.preventDefault函数,则ajaxForm不起作用
- 如果存在Javascript,请删除多个类中的一个
- JavaScript:仅按字符或按字符+数字(如果存在)拆分字符串
- 如果存在Cookie,则JavaScript重定向
- 如果存在cookie,则自动执行Javascript
- Internet Explorer CSS类样式没有'如果存在具有相同类名的其他元素,则不适用
- 如果存在空单元格,DataTables将发出警告
- 如果存在跨度,则将类添加到链接
- Node.js Express应用程序:如果存在cookie,则从服务器端向元素添加CSS类
- jQuery按钮显示/隐藏类,如果存在类
- JQuery:如果存在具有相同 ID 的元素,则选择第二个元素
- 如果存在多个现有值,则向文本区域值添加分隔符 (Javascript)