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

mad*_*dan 3 selenium mocha.js node.js

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

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

我希望 fieldBool 为假,但测试停止(超时或不存在此类元素)。

Art*_*org 5

当元素不存在时,WebDriver 将抛出错误。因此,我们必须检查NoSuchElementError.

我们可以通过使用.findElement承诺的可选回调来检查元素是否不存在,该回调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");
Run Code Online (Sandbox Code Playgroud)

  • 我不知道 webdriver.promise 世界中的所有 magix,但是人类很难找出如何查看元素是否存在!.then(成功,失败)!就这样!谢谢亚瑟·韦博格 (2认同)