在我执行这一行之前,我试图检查一个元素是否存在:
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/