javascript - 使用 Selenium、JavaScript 和 Node.js 检查元素是否存在

标签 javascript node.js selenium

在我执行这一行之前,我试图检查一个元素是否存在:

driver.findElement(webdriver.By.id('test'));

如果文档中不存在 id test,即使在 try block 中,也会抛出错误“没有这样的元素”。 我找到了 Java 的答案,您可以在其中检查大小是否为 0,但在 Node.js 中,这会在我检查大小之前引发错误:

抛出错误; ^ NoSuchElementError:没有这样的元素

最佳答案

您可以利用 then() 的可选错误处理程序参数。

driver.findElement(webdriver.By.id('test')).then(function(webElement) {
        console.log('Element exists');
    }, function(err) {
        if (err.state && err.state === 'no such element') {
            console.log('Element not found');
        } else {
            webdriver.promise.rejected(err);
        }
    });

我在文档中找不到它的明确说明,但是从 selenium-webdriver 模块源中的 webdriver/promise.js 中的函数定义确定了这一点:

  /**
   * Registers a callback on this Deferred.
   * @param {Function=} opt_callback The callback.
   * @param {Function=} opt_errback The errback.
   * @return {!webdriver.promise.Promise} A new promise representing the result
   *     of the callback.
   * @see webdriver.promise.Promise#then
   */
  function then(opt_callback, opt_errback) { 

关于javascript - 使用 Selenium、JavaScript 和 Node.js 检查元素是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20148857/

相关文章:

javascript - 使用 JSON 相对于 XML 的差异/优点,反之亦然?

javascript - JS 构造函数和数组

node.js - 如何在nodejs中压缩流?

node.js - 有没有办法强制 path.normalize 使用 windows/mac 路径格式?

python - 使用 python、selenium 和 pyvirtualdisplay 单击 Web 元素时遇到问题

android - 选择 selenium grid2 上的特定节点来运行测试

java - 目前无法识别列表中选中/选定的单选按钮

javascript - 如何创建一个 Angular 分量的独立实例

javascript - @babel/register 中忽略的正确正则表达式模式是什么

node.js - 机器人框架默认对话框未触发