一尘不染

检查元素是否存在-Selenium / JavaScript / Node-js

selenium

我试图在执行此行之前检查元素是否存在:

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

如果id test在文档中不存在,甚至在try-block中,都会引发错误“ no such element”
。我找到了Java的答案,您可以在其中检查大小是否为0,但是在node-js中,这会在我检查大小之前引发错误。

throw error; ^ NoSuchElementError: no such element


阅读 550

收藏
2020-06-26

共1个答案

一尘不染

您可以利用的可选错误处理程序参数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);
        }
    });

我在文档中找不到明确声明的内容,但是webdriver/promise.js通过selenium- webdriver模块源代码中的函数定义确定了这一点:

  /**
   * 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) {
2020-06-26