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

如何实现Selenium ChromeDriver复用实例并加载本地Chrome Cookie

问题解决方法

问题根源

你当前的代码里,静态变量driver在类加载阶段就完成了初始化,但这时候options还没添加user-data-dir参数,连System.setProperty都还没执行——相当于ChromeDriver是在没有任何自定义配置的情况下启动的,自然不会加载本地Chrome的Cookie,还会新建会话。

修正步骤

  1. 只把driver和options声明为类静态变量,不要在声明时初始化
  2. 把所有配置逻辑(设置驱动路径、添加用户数据目录参数)放到main方法里,完成配置后再初始化driver
  3. 这样driver启动时会带上本地用户数据目录的配置,加载本地Cookie,同时作为类静态变量,handlecase方法可以直接复用这个实例

修正后的完整代码

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;

public class Criteria {
    // 只声明静态变量,不初始化
    static ChromeOptions options;
    static WebDriver driver;

    public static void main(String args[]) throws Exception {
        // 1. 设置ChromeDriver路径
        System.setProperty("webdriver.chrome.driver", "C:\\Users\\sample\\Downloads\\chromedriver-win64\\chromedriver.exe");
        // 2. 初始化options并添加本地用户数据目录参数
        options = new ChromeOptions();
        // 注意路径要对应你本地Chrome的用户数据目录,Windows和Mac路径格式不同,按需调整
        options.addArguments("user-data-dir=C:\\Users\\sample\\AppData\\Local\\Google\\Chrome\\User Data");
        // 3. 用配置好的options初始化driver
        driver = new ChromeDriver(options);
        driver.manage().window().maximize();

        // 示例调用handlecase
        handlecase("https://example.com");
    }

    public static void handlecase(String type) {
        // 直接复用静态driver实例
        for (int i = 0; i < 5; i++) { // 替换5为实际循环次数
            driver.get(type);
            // 这里添加你的业务逻辑
        }
    }
}

额外注意事项

  • 确保user-data-dir的路径正确:Windows默认路径是C:\Users\<你的用户名>\AppData\Local\Google\Chrome\User Data,Mac是/Users/<你的用户名>/Library/Application Support/Google/Chrome/,路径错误会导致加载失败
  • 启动ChromeDriver前,关闭所有本地Chrome窗口,否则会因为用户数据目录被占用而启动失败
  • 可以复制一份默认用户目录作为自动化测试专用目录,避免影响日常使用的Chrome数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 07:54:52