【问题标题】:How to check if an element doesnt exist selenium nodejs如何检查元素是否不存在 selenium nodejs
【发布时间】:2023-03-09 01:28:01
【问题描述】:

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

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

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

【问题讨论】:

  • 我找到了这个例子:expect(element(by.css('#logout')).isPresent()).toBeTruthy();。您可以在此处查看该项目:stackoverflow.com/questions/21245418/…
  • 所以我应该使用toBeFalsy() ?

标签: node.js selenium mocha.js


【解决方案1】:

当元素不存在时,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");

【讨论】:

  • 我不知道 webdriver.promise 世界中的所有 magix,但是很难找出如何查看元素是否存在! .then(成功,失败)!就这样!谢谢你亚瑟·韦博格
  • 很高兴能提供帮助,真的很高兴听到我的挖掘帮助了别人! (断断续续两天哈哈)同意难度>_
【解决方案2】:
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 等。

【讨论】:

    【解决方案3】:

    试试这个,

    driver.isElementPresent(webdriver.By.id("someId")).then(
        function(isPresent){
            assert.equal(false, isPresent , "message");   
        }
    )
    

    希望对你有帮助

    【讨论】:

    • .isElementPresent(...) 似乎不是根据nodejs spec for the webDriver 的方法。 driver 是来自标准 npm 包(selenium-webdriver)吗?
    • .isElementPresent 已弃用
    猜你喜欢
    • 1970-01-01
    • 2021-07-08
    • 2018-01-23
    • 2021-05-17
    • 1970-01-01
    • 2021-09-23
    • 1970-01-01
    • 1970-01-01
    • 2012-03-22
    相关资源
    最近更新 更多