Selenium JavaScript:调用driver.quit触发NoSuchSessionError但catch块未执行
问题解决:无法捕获driver.quit()的异步错误
你的问题核心在于:Selenium JavaScript版的driver.quit()是异步操作,它返回一个Promise对象,而你用的是同步的try/catch结构,这种结构只能捕获同步抛出的错误,无法捕获Promise的拒绝(也就是异步错误),所以报错时catch块不会执行。
两种可行的修正方案
方案1:使用Promise的.catch()方法
直接在driver.quit()的Promise链上添加错误捕获:
console.log("I'm here"); driver.quit() .catch(() => { console.log("Catch me"); });
方案2:用async/await配合try/catch
把代码放在异步函数中,用await等待driver.quit()完成,再用try/catch捕获错误:
async function safeQuitDriver() { console.log("I'm here"); try { await driver.quit(); } catch (err) { console.log("Catch me"); // 可选:打印错误详情便于排查 // console.error("Quit failed:", err); } } safeQuitDriver();
需要注意的是,你参考的Java版代码是同步阻塞的,所以try/catch能直接捕获错误,但JavaScript版的WebDriver API全是异步的,必须用异步错误处理逻辑才能生效。
内容的提问来源于stack exchange,提问作者Grant Curell
相关产品推荐
相关产品推荐

