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

Selenium Standalone Server搭配WebdriverIO需永久联网问题求助

解决Selenium Standalone + WebdriverIO每次启动都下载chromedriver的问题

我之前也碰到过一模一样的糟心事!先给你拆解下背后的原因,再分享几个亲测有效的解决办法:

为什么每次启动都要重新下载?

Selenium Standalone Server默认的逻辑是:启动时会自动检查本地有没有和当前Chrome浏览器版本完全匹配的chromedriver。如果找不到匹配版本,或者它没检测到本地已有的驱动文件,就会尝试从谷歌的存储服务器(就是你报错里的chromedriver.storage.googleapis.com)下载对应版本的驱动。而且默认情况下,它不会缓存下载好的驱动——这就导致每次启动都要重复检测+下载的流程,断网时自然因为连不上服务器而启动失败。

实用解决办法

1. 手动下载驱动并指定路径

  • 第一步:找到和你本地Chrome版本完全匹配的chromedriver(比如Chrome是118.x,就找对应118版本的驱动)
  • 第二步:把下载好的chromedriver放到项目内的固定目录,比如./drivers/chromedriver.exe
  • 第三步:启动Selenium时通过参数指定驱动路径:
    java -Dwebdriver.chrome.driver=./drivers/chromedriver.exe -jar selenium-server-standalone-x.x.x.jar
    
    如果你用WebdriverIO的wdio-selenium-standalone-service,可以在wdio.conf.js里配置启动参数:
    services: [
      ['selenium-standalone', {
        args: {
          'webdriver.chrome.driver': './drivers/chromedriver.exe'
        }
      }]
    ]
    

2. 使用selenium-standalone npm包缓存驱动

这个工具专门解决Selenium驱动的缓存问题,比直接用官方jar包省心太多:

  • 全局安装工具:
    npm install selenium-standalone -g
    
  • 先执行安装命令,把需要的驱动下载并缓存到本地:
    selenium-standalone install
    
  • 之后启动Selenium就用这个命令,即使断网也能正常启动——因为驱动已经存在本地缓存里了:
    selenium-standalone start
    
    搭配WebdriverIO使用时,也能通过wdio-selenium-standalone-service配置调用这个工具,不用每次手动启动。

3. 检查WebdriverIO的自动更新配置

有些情况下,WebdriverIO的服务配置可能会强制开启驱动自动更新,你可以在wdio.conf.js里检查seleniumInstallArgs,如果有--force这类强制更新的参数,去掉它就能避免每次重新下载。

关于你遇到的报错

你看到的getaddrinfo ENOTFOUND就是断网后DNS解析失败,连不上谷歌驱动存储服务器导致的。只要用上上面的方法让Selenium调用本地驱动,这个报错就会彻底消失。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:55:35