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

Java循环Selenium会话出现SessionNotCreatedException,throws InterruptedException是否有误?

解答你的问题

一、关于throws InterruptedException的疑问

首先明确:throws InterruptedException和SessionNotCreatedException之间没有直接关联,这个声明本身不存在错误。

原因如下:

  • InterruptedException是一个受检异常(Checked Exception),通常在代码中调用了会阻塞线程的方法(比如Thread.sleep()、Selenium显式等待WebDriverWait内部的线程等待逻辑等)时,需要在方法签名中声明抛出,或者在方法内部捕获处理。
  • SessionNotCreatedException属于Selenium定义的运行时异常(RuntimeException),这类异常不需要在方法签名中通过throws声明——JVM允许方法直接抛出这类异常而无需提前告知调用者。

所以你的方法里写throws InterruptedException是合理的(只要你的代码确实有会触发这个异常的逻辑),和你遇到的SessionNotCreatedException没有冲突,也不存在“因为异常类型不匹配而错误”的问题。

二、排查SessionNotCreatedException的可能原因

结合你给出的环境信息(Chrome 64.0.3282.119、ChromeDriver 2.35、Selenium Server 3.10.0),先确认版本兼容性:ChromeDriver 2.35官方说明是支持Chrome 62-64版本,所以版本匹配是没问题的。那可以从这些方向排查:

  • 资源耗尽问题:循环创建大量Selenium会话会占用较多系统资源(内存、进程),如果循环次数过多,可能导致系统无法创建新的Chrome进程,触发会话创建失败。建议在循环中每次使用完会话后,调用driver.quit()彻底关闭浏览器进程,释放资源。
  • ChromeDriver权限问题:在Linux环境下,ChromeDriver文件需要有可执行权限。可以通过命令chmod +x chromedriver赋予执行权限。
  • Chrome启动参数问题:Linux下运行Chrome可能需要添加特定启动参数,比如禁用沙箱模式(--no-sandbox)、禁用GPU(--disable-gpu),避免因系统环境限制导致浏览器无法启动。示例代码:
    ChromeOptions options = new ChromeOptions();
    options.addArguments("--no-sandbox");
    options.addArguments("--disable-gpu");
    WebDriver driver = new ChromeDriver(options);
    
  • 系统环境问题:检查Linux系统是否安装了Chrome运行所需的依赖库(比如libXss1、libappindicator1等),缺失依赖会导致Chrome无法启动,进而触发会话创建失败。
  • Selenium Server配置问题:如果是通过Selenium Grid运行,确认Server是否正常运行,节点是否注册成功,且节点的ChromeDriver路径配置正确。

内容的提问来源于stack exchange,提问作者SimonFreeman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 07:20:21