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

Linux服务器运行Selenium WebDriverManager抛出异常问题求助

异常根因

该异常与Chrome浏览器安装状态无关,核心触发原因是WebDriverManager初始化驱动解析缓存时无对应路径的写入权限:

  • WebDriverManager 5.1.0版本默认将驱动版本解析缓存、下载的浏览器驱动文件存储在运行用户主目录下的.cache/selenium路径中
  • 应用部署到Ubuntu 18.04的Tomcat 9运行时,Tomcat服务的默认运行用户(通常为tomcat或www-data)要么没有自身主目录的访问权限,要么最小化安装场景下该用户默认未创建主目录,导致WebDriverManager尝试创建缓存属性文件时抛出No such file or directory的IO异常
  • 本地Windows 10环境运行正常,是因为本地登录用户对个人用户目录拥有完整读写权限,不会触发权限问题
解决方法

按优先级推荐以下可落地方案:

方案1:手动指定可读写缓存路径(最稳定,不依赖系统默认权限配置)

在调用setup()方法前,主动指定Tomcat进程拥有读写权限的路径作为WebDriverManager缓存目录,比如选择Tomcat自带的临时目录,或提前创建专属目录并给Tomcat运行用户授权:

// 示例:指定缓存路径为Tomcat临时目录下的专属文件夹,需提前给Tomcat运行用户授予该路径读写权限
WebDriverManager.chromedriver()
        .cachePath("/opt/tomcat/temp/webdriver-cache")
        .setup();

也可以不修改代码,通过全局配置指定路径:

  • 启动Tomcat时添加JVM参数:-Dwdm.cachePath=/your/writable/path
  • 或配置系统环境变量WDM_CACHE_PATH为对应可读写路径

方案2:修复Tomcat运行用户的目录权限

  1. 执行命令ps -ef | grep tomcat,确认Tomcat进程的实际运行用户
  2. 检查该用户的主目录是否存在,Ubuntu 18.04下Tomcat 9默认主目录通常为/var/lib/tomcat9,若目录不存在则手动创建
  3. 执行权限授予命令,将主目录属主修改为Tomcat运行用户:chown -R 你的tomcat用户名:你的tomcat用户组 /path/to/tomcat/home
  4. 重启Tomcat服务即可生效
额外配置提醒

Linux无桌面环境下运行Chrome浏览器,初始化驱动时必须添加无头模式相关参数,否则后续启动浏览器会触发新的异常,参考配置如下:

ChromeOptions options = new ChromeOptions();
options.addArguments("--headless=new");
options.addArguments("--no-sandbox");
options.addArguments("--disable-dev-shm-usage");
WebDriver driver = new ChromeDriver(options);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 00:33:20