You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 14:01:40