我试图在执行此行之前检查元素是否存在:
driver.findElement(webdriver.By.id('test'));
如果id test在文档中不存在,甚至在try-block中,都会引发错误“ no such element” 。我找到了Java的答案,您可以在其中检查大小是否为0,但是在node-js中,这会在我检查大小之前引发错误。
test
try
throw error; ^ NoSuchElementError: no such element
您可以利用的可选错误处理程序参数then()。
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模块源代码中的函数定义确定了这一点:
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) {