如何检查元素是否不存在selenium nodejs

时间:2014-11-25 17:58:17

标签: node.js selenium mocha

我想检查页面上是否存在元素(不应该),如果不存在则继续。

driver.wait(function() {   
        fieldBool = driver.isElementPresent(webdriver.By.id("someId"));
        return fieldBool;
}, timeout).then(function(b) {
        assert.equal(false, b, "message");    
});

我希望fieldBool为false,但测试会停止(超时或没有这样的元素存在)。

3 个答案:

答案 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等。