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

能否使用Google Chrome配置文件进行并行测试?已登录配置文件执行失败

解决Chrome配置文件多测试实例冲突问题

问题根源

你直接使用Chrome默认的用户数据目录(C:/Users/user_name/AppData/Local/Google/Chrome/User Data/Default/Default),当第一个测试启动Chrome后,这个目录会被Chrome进程锁定,后续测试尝试访问该目录时会因为权限冲突启动失败。

解决方案

1. 复制默认配置到独立测试目录

手动复制Chrome默认用户数据目录到一个新的独立路径,比如C:/Users/user_name/AppData/Local/Google/Chrome/Test_Profile。这样每个测试实例都使用独立的配置目录,不会互相抢占锁资源。

2. 修改代码指向新配置目录

更新ChromeOptions的配置,替换为复制后的测试用目录:

ConfigReader configReader = ConfigReader.getInstance(); 
System.setProperty("webdriver.chrome.driver", configReader.getChromedriverPath()); 
System.setProperty("webdriver.chrome.bin", configReader.getChromeBrowser()); 
ChromeOptions options = new ChromeOptions(); 
// 替换为复制后的独立测试配置路径
options.addArguments("user-data-dir=C:/Users/user_name/AppData/Local/Google/Chrome/Test_Profile"); 
driver = new ChromeDriver(options);

3. 确保测试结束后彻底释放资源

在每个测试的收尾方法中,调用driver.quit()而非driver.close(),这样能彻底关闭Chrome进程并释放目录锁:

@AfterMethod
public void teardown() {
    if (driver != null) {
        driver.quit();
    }
}

4. 可选:自动化临时目录方案

如果需要更灵活的方式,可以在测试启动前自动复制默认配置到临时目录,测试结束后自动清理:

// 测试启动前复制配置到临时目录
Path sourceDir = Paths.get("C:/Users/user_name/AppData/Local/Google/Chrome/User Data/Default");
Path tempDir = Files.createTempDirectory("ChromeTestProfile");
Files.walk(sourceDir)
     .forEach(source -> {
         try {
             Path dest = tempDir.resolve(sourceDir.relativize(source));
             Files.copy(source, dest, StandardCopyOption.REPLACE_EXISTING);
         } catch (IOException e) {
             e.printStackTrace();
         }
     });

// 配置Chrome使用临时目录
options.addArguments("user-data-dir=" + tempDir.toString());

// 测试结束后清理临时目录
@AfterMethod
public void teardown() {
    if (driver != null) {
        driver.quit();
    }
    // 删除临时目录及内容
    try {
        Files.walk(tempDir)
             .sorted(Comparator.reverseOrder())
             .forEach(path -> {
                 try {
                     Files.delete(path);
                 } catch (IOException e) {
                     e.printStackTrace();
                 }
             });
    } catch (IOException e) {
        e.printStackTrace();
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 00:42:41