Selenium程序运行成功后出现Connection reset警告问题咨询
问题说明
Selenium自动化测试用例可完整执行、断言结果符合预期,但运行结束后会抛出警告信息:WARNING: Connection reset java.net.SocketException: Connection reset
测试所用代码如下:
package seleniumPractice; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; public class ToolTip { public static void main(String[] args) throws InterruptedException { System.setProperty("webdriver.chrome.driver", "C:\\Users\\m\\Documents\\xyz\\WebDrivers\\chromedriver.exe"); WebDriver driver = new ChromeDriver(); driver.manage().window().maximize(); driver.navigate().to("https://www.globalsqa.com/demo-site/tooltip/"); WebElement globe = driver.findElement(By.xpath("//a[@rel='home']")); String expectedTooltip = "GlobalSQA"; String actualTooltip = globe.getAttribute("title"); System.out.println("Actual Title of Tool Tip : " + actualTooltip); if (actualTooltip.equals(expectedTooltip)) { System.out.println("Test Case Passed"); } driver.close(); } }
运行环境版本
- Google Chrome 浏览器版本:102.0.5005.115
- ChromeDriver 版本:102.0.5005.61
- selenium-java 依赖版本:4.2.1
- selenium-chrome-driver 依赖版本:4.2.1
警告产生原因
该警告属于Selenium 4.x早期版本的常见非阻断性提示,不会影响测试逻辑执行与结果准确性,触发原因主要有三点:
- Chrome浏览器与ChromeDriver小版本不匹配:当前使用的浏览器版本为102.0.5005.115,ChromeDriver版本为102.0.5005.61,二者关闭阶段的通信同步逻辑存在偏差,容易出现连接重置。
- Selenium 4.2.1版本存在已知的连接清理缺陷:测试结束执行关闭操作时,ChromeDriver会尝试发送DevTools收尾指令,若此时Chrome浏览器进程已经开始销毁,就会触发Socket连接重置的警告日志。
- 关闭方法使用不当:
driver.close()仅会关闭当前激活的浏览器标签页,不会主动终止后台运行的ChromeDriver进程,残留进程回收端口连接时也可能触发该警告。
解决方法
- 对齐Chrome与ChromeDriver的精确版本:将ChromeDriver替换为与当前浏览器版本完全一致的102.0.5005.115版本,消除版本差带来的通信兼容问题。
- 替换进程关闭逻辑:将代码末尾的
driver.close()替换为driver.quit(),该方法会在关闭所有浏览器标签页后主动终止ChromeDriver后台进程,完整走完连接销毁流程,降低异常连接重置的概率。 - 升级Selenium依赖版本:将selenium-java、selenium-chrome-driver依赖升级到4.3.0及以上的稳定版本,官方已在后续迭代中修复了DevTools连接清理阶段的异常日志问题。
- 若不计划调整版本,且确认用例执行结果完全符合预期,可直接忽略该警告:该警告仅出现在进程清理阶段,不会对测试过程、断言结果产生任何影响,不会导致用例误报或漏报。
内容的提问来源于stack exchange,提问作者Mona Pavashiya
相关产品推荐
相关产品推荐

