检查元素是否存在 - selenium/javascript/node-js

F. *_*kes 8 javascript selenium node.js

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

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

如果test文档中不存在id ,即使在try-block中,也会抛出错误"no such element" .我找到了Java的答案,您可以在其中检查大小是否为0,但在node-js中,这会在我检查大小之前抛出错误.

throw error; ^ NoSuchElementError: no such element

Zug*_*alt 24

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

我找不到它的文件中明确规定,但在确定这个从函数定义webdriver/promise.jsselenium-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) { 
Run Code Online (Sandbox Code Playgroud)

  • 这应该是公认的答案,因为它是唯一演示如何使用NodeJS Web驱动程序确定元素是否存在的答案. (3认同)
  • 除非op错误地使用python而不是javascript,否则这应该是正确的答案.投了票! (2认同)