当在并行执行时,Selenium Chrome Driver 抛出 java.net.ConnectException 异常通常是由于并发访问 ChromeDriver 导致的。为了解决此问题,您可以使用以下方法之一:
ThreadLocal
来实例化 ChromeDriver:public class DriverFactory {
private static ThreadLocal driver = new ThreadLocal<>();
public static ChromeDriver getDriver() {
return driver.get();
}
public static void setDriver() {
// 设置 ChromeDriver 的路径和其他配置
System.setProperty("webdriver.chrome.driver", "path/to/chromedriver.exe");
ChromeOptions options = new ChromeOptions();
// 设置其他选项
// 实例化 ChromeDriver
driver.set(new ChromeDriver(options));
}
public static void quitDriver() {
if (driver.get() != null) {
driver.get().quit();
driver.remove();
}
}
}
在测试类中,使用以下代码来实例化和关闭 ChromeDriver:
@BeforeMethod
public void setUp() {
DriverFactory.setDriver();
}
@Test
public void testMethod() {
// 使用 DriverFactory.getDriver() 来获取 ChromeDriver 实例并执行测试步骤
}
@AfterMethod
public void tearDown() {
DriverFactory.quitDriver();
}
通过使用ThreadLocal
,每个线程将获得自己的 ChromeDriver 实例,从而避免了并发访问问题。
使用 Selenium Grid,您可以在不同的节点上运行测试,每个节点都有自己的浏览器实例。这样,您可以避免并发访问同一个 ChromeDriver 实例的问题。有关如何设置和使用 Selenium Grid 的更多信息,请参阅 Selenium 文档。
希望这些解决方法对您有所帮助!