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

使用ChromeDriver2.37+Selenium2.45测试Angular网站遇随机连接关闭异常

解决ChromeDriver与Selenium WebDriver随机ConnectionClosed异常

嘿,我之前也帮不少人解决过类似的ChromeDriver+Selenium在Angular测试里的随机连接问题,结合你的环境(ChromeDriver 2.37 + Selenium 2.45),给你几个实打实的排查和解决方向:

1. 先搞定版本兼容性——这是最常见的坑

你的Selenium和ChromeDriver版本差得有点远啊:Selenium 2.45是2015年的老版本,ChromeDriver 2.37只适配Chrome 64-66版本。如果你的Chrome浏览器版本高于66,那随机连接异常基本是板上钉钉的事。

  • 要么降级Chrome浏览器到64-66版本,要么升级Selenium到3.x系列(至少3.4以上,和ChromeDriver 2.37兼容)。记住核心规则:ChromeDriver的版本要和Chrome主版本号对应,比如2.37对应Chrome 64-66,这个不用查外链,记准就行。

2. 给Angular页面加“智能等待”,别着急操作

Angular页面全是异步加载,你执行moveto的时候,元素可能还没完全绑定好,就容易触发连接异常:

  • 别用Thread.sleep()这种笨办法,换成Selenium的WebDriverWait结合显式等待条件,比如等元素可交互了再动它。举个Java示例:
    WebDriverWait wait = new WebDriverWait(driver, 10);
    WebElement targetElement = wait.until(ExpectedConditions.elementToBeClickable(By.id("your-element-id")));
    
    Actions actions = new Actions(driver);
    actions.moveToElement(targetElement).perform();
    
  • 要是能等Angular的$http请求都完成了再操作,稳定性会更高,你可以自己写个等待Angular加载完成的方法。

3. 给ChromeDriver加几个启动参数,稳一波

试试添加这些参数,能减少不少渲染和权限相关的异常:

ChromeOptions options = new ChromeOptions();
options.addArguments("--no-sandbox"); // 禁用沙箱,避免权限问题
options.addArguments("--disable-gpu"); // 禁用GPU加速,减少渲染bug
options.setPageLoadStrategy(PageLoadStrategy.NORMAL); // 等页面所有资源加载完再继续
ChromeDriver driver = new ChromeDriver(options);

4. 测试完一定要彻底清理ChromeDriver进程

如果测试结束只关了浏览器没杀ChromeDriver进程,时间久了会占端口、耗资源,随机异常就找上门了:

  • 测试用例的收尾方法里,一定要用driver.quit(),别用driver.close()——quit()会彻底干掉ChromeDriver进程,close()只是关个标签页。
  • 测试前也可以手动清一下残留进程:
    Windows用命令:
    taskkill /F /IM chromedriver.exe /IM chrome.exe
    
    Linux/macOS用:
    pkill -f chromedriver
    pkill -f chrome
    

5. 查端口占用+调超时时间

异常里的60430是ChromeDriver随机分配的端口,要是被其他进程占了,连接肯定崩:

  • 测试前查一下这个端口的占用情况:
    Windows:netstat -ano | findstr :60430
    Linux/macOS:lsof -i :60430
  • 给Selenium加个更长的超时时间,别因为响应慢就直接断连:
    driver.manage().timeouts().setScriptTimeout(30, TimeUnit.SECONDS);
    driver.manage().timeouts().pageLoadTimeout(30, TimeUnit.SECONDS);
    

建议先从版本兼容性开始排查,这是这类问题的头号元凶,按这个顺序试下来,应该能解决那个随机的ConnectionClosed异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:32:34