我想检查页面上是否存在元素(不应该),如果不存在则继续。
driver.wait(function() {
fieldBool = driver.isElementPresent(webdriver.By.id("someId"));
return fieldBool;
}, timeout).then(function(b) {
assert.equal(false, b, "message");
});
我希望fieldBool为false,但测试会停止(超时或没有这样的元素存在)。
答案 0 :(得分:3)
当元素不存在时,WebDriver将抛出错误。所以,我们必须检查NoSuchElementError
。
我们可以通过使用.findElement
promise driver.findElement(...).then(successCallback,errorCallback)
的可选回调来检查元素是否存在,这将被调用作为参数名称暗示。
以下是我一直在做的事情:
var existed = await driver.findElement(webdriver.By.id("someId")).then(function() {
return true;//it was found
}, function(err) {
if (err instanceof webdriver.error.NoSuchElementError) {
return false;//element did not exist
} else {
webdriver.promise.rejected(err);//some other error...
}
});
assert.equal(existed,false,"message");
答案 1 :(得分:1)
试试这个,
driver.isElementPresent(webdriver.By.id("someId")).then(
function(isPresent){
assert.equal(false, isPresent , "message");
}
)
我希望它可以帮到你
答案 2 :(得分:0)
driver.findElements(webdriver.By.id('someId')).then((elements)=>{
if(elements.length > 0){
throw new Error('The Element was found!');
} else {
return true;
}
});
这可以通过查找与id,css,name等匹配的所有元素,并确保返回的结果(这将是一个元素数组)的长度为0 - 意味着没有找到任何元素在页面上使用那个css / id / name等。