【发布时间】:2020-05-23 04:18:22
【问题描述】:
我正试图用 Promise 来解决我的问题,我收到这个错误,抱怨未处理的 Promise 拒绝,但如果它被拒绝,我确实有一个 catch!
谁能帮我解决我做错了什么?
这是我的代码:
var webdriver = require('selenium-webdriver');
function searchTextOnGoogle() {
var driver = new webdriver.Builder().forBrowser("chrome").build();
driver.get("www.google.com").then(function() {
driver.findElement(webdriver.By.linkText("Automation")).click().then(function() {
driver.getTitle().then(function(title) {
setTimeout(() => {
console.log(title);
driver.quit();
}, 5000);
});
}).catch(function(err) {
console.log(err);
});
});
}
错误:
(node:200092) UnhandledPromiseRejectionWarning: 未处理的承诺 拒绝。此错误源于在异步内部抛出 没有 catch 块的函数,或者通过拒绝一个承诺 不使用 .catch() 处理。 (拒绝 ID:1)(节点:200092)[DEP0018] DeprecationWarning:不推荐使用未处理的承诺拒绝。在 未来,未处理的承诺拒绝将终止 具有非零退出代码的 Node.js 进程。
整个错误信息:
DevTools 监听 ws://127.0.0.1:62260/devtools/browser/6dd5b3dc-f6bb-4147-9421-a6e0e172017b(node:191496) UnhandledPromiseRejectionWarning: InvalidArgumentError: 无效 参数(会话信息:chrome=79.0.3945.117) 在 Object.throwDecodedError (C:\promise\node_modules\selenium-webdriver\lib\error.js:550:15) 在 parseHttpResponse (C:\promise\node_modules\selenium-webdriver\lib\http.js:563:13) 在 Executor.execute (C:\promise\node_modules\selenium-webdriver\lib\http.js:489:26) 在 processTicksAndRejections (internal/process/task_queues.js:93:5) 在异步 thenableWebDriverProxy.execute (C:\promise\node_modules\selenium-webdriver\lib\webdriver.js:699:17) (节点:191496)UnhandledPromiseRejectionWarning:未处理的承诺 拒绝。此错误源于在异步内部抛出 没有 catch 块的函数,或者通过拒绝一个承诺 不使用 .catch() 处理。 (拒绝 ID:1)(节点:191496)[DEP0018] DeprecationWarning:不推荐使用未处理的承诺拒绝。在 未来,未处理的承诺拒绝将终止 具有非零退出代码的 Node.js 进程。
【问题讨论】:
-
抛出哪一行?是
driver.quit,还是什么? -
没有给我指定行号,我用我收到的整个错误消息更新了我的问题。
-
您在
driver.getTitle().then()上没有.catch()。driver.get("www.google.com").then()上没有.catch()。可能这些都应该链接在一起(通过返回内部承诺),然后您在顶层有一个.catch()。就像现在一样,你只有一个.catch()在中间层。
标签: javascript node.js selenium promise