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

Linux虚拟机PowerShell调用Selenium启动ChromeDriver遇连接拒绝问题求助

问题分析与解决方法

这种情况我之前在Linux环境下用PowerShell操作Selenium时也碰到过,本质是ChromeDriver启动初始化的速度跟不上PowerShell Selenium模块的连接重试节奏,具体原因和解决办法如下:

为什么会出现连接拒绝错误?

  • 当你执行$driver = Start-SeChrome时,PowerShell的Selenium模块会先启动ChromeDriver进程,然后立刻尝试通过指定端口(这里是38481)和它建立连接。但ChromeDriver启动时需要完成一系列初始化操作:加载浏览器配置、绑定端口、启动Chrome内核等,这个过程需要几毫秒到几秒不等。
  • 模块第一次连接时,ChromeDriver的端口还没完全就绪,就会抛出Connection refused错误;之后模块会自动重试,直到ChromeDriver完全启动,所以最后会出现ChromeDriver was started successfully的提示——前面的错误都是重试过程中的失败记录,不是最终结果。

如何消除这些连接错误?

1. 延长模块等待ChromeDriver就绪的超时时间

你可以通过Start-SeChrome的-Timeout参数,给模块更长的等待时间,避免过早发起连接尝试:

$driver = Start-SeChrome -Timeout 10

这里的10代表等待10秒,你可以根据虚拟机的性能调整数值,一般3-5秒就足够解决大部分延迟问题。

2. 手动启动ChromeDriver并等待端口就绪

如果模块的超时参数不够灵活,你可以手动启动ChromeDriver,等端口完全就绪后再建立连接:

# 启动ChromeDriver,指定端口并后台运行
Start-Process chromedriver -ArgumentList "--port=38481" -NoNewWindow

# 循环检查端口,直到能正常连接
while (-not (Test-NetConnection localhost -Port 38481 -InformationLevel Quiet)) {
    Start-Sleep -Milliseconds 500
}

# 连接到已启动的ChromeDriver实例
$driver = SeNewDriver -Chrome -RemoteUrl "http://localhost:38481/wd/hub"

3. 确保ChromeDriver与Chrome版本严格匹配

ChromeDriver和Chrome浏览器的版本必须完全对应(比如Chrome 85.x必须搭配ChromeDriver 85.x),版本不匹配会导致启动缓慢甚至初始化失败,大幅增加连接错误的概率。你可以用google-chrome --version查看Chrome版本,然后替换成对应版本的ChromeDriver。

4. 检查虚拟机的端口占用情况

偶尔会出现其他进程占用了ChromeDriver随机分配的端口(比如38481),导致连接失败。你可以用以下命令检查端口占用:

lsof -i :38481

如果有其他进程占用,杀死该进程后再重试,或者手动指定ChromeDriver使用一个未被占用的固定端口。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 21:22:50