使用Java和Selenium WebDriver加载Chrome配置文件

25

我在使用Selenium加载Chrome配置文件时遇到了一些问题。

String pathToChrome = "driver/chromedriver.exe";
System.setProperty("webdriver.chrome.driver", pathToChrome);

DesiredCapabilities capabilities = DesiredCapabilities.chrome();
String chromeProfile = "C:\\Users\\Tiuz\\AppData\\Local\\Google\\Chrome\\User Data\\Default";
ArrayList<String> switches = new ArrayList<String>();
switches.add("--user-data-dir=" + chromeProfile);
capabilities.setCapability("chrome.switches", switches);
WebDriver driver = new ChromeDriver(capabilities);
driver.get("http://www.google.com");

它一开始很好,运行得很完美,但我想加载默认配置文件,因为我想测试一些启用了扩展和测试了一些偏好设置。

有人知道为什么这段代码不能正常工作吗?

我已经在Windows 7 x64上使用Selenium 2.29.1和2.28.0以及chromedriver 26.0.1383.0进行了测试。


你好,能否指导我如何添加Chrome配置文件到你的驱动程序?非常感谢! - snikt
8个回答

51

这是一个老问题,但我仍然有问题无法解决,所以我进行了更多的研究,以理解发生了什么。@PrashanthSams的答案是正确的,但我错误地将\Default添加到配置文件路径的末尾。

我发现Chrome在user-data-dir中指定的配置文件路径后附加了\Default。因此,如果您的配置文件路径被指定为:

user-data-dir=C:\Users\user_name\AppData\Local\Google\Chrome\User Data\Default\

它将附加\Default,您最终会到达:

C:\Users\user_name\AppData\Local\Google\Chrome\User Data\Default\Default

这与在该用户配置文件下通常打开Chrome时获得的配置文件不同。

如果您打开命令提示符,导航到Chrome可执行文件目录,并按照类似于此选项运行chrome,您还可以验证您的设置:

chrome.exe --user-data-dir="C:\Users\user_name\AppData\Local\Google\Chrome\User Data"

最后,您可以在Chrome浏览器的新标签页中输入chrome://version/并查看实际使用的配置文件。它将列出如下:

Profile Path C:\Users\user_name\AppData\Local\Google\Chrome\User Data\Default


1
这太棒了。谢谢兄弟。 - Roro
9
要选择不同的配置文件,请说“配置文件1”,使用options.addArguments(“profile-directory = Profile 1”); - Glen Pierce
你好,能否指导我如何添加Chrome配置文件到你的驱动程序?非常感谢! - snikt

21

这些组合对我有用 :)

System.setProperty("webdriver.chrome.driver","C:\\chromedriver.exe");
ChromeOptions options = new ChromeOptions();
options.addArguments("user-data-dir=C:/Users/user_name/AppData/Local/Google/Chrome/User Data");
options.addArguments("--start-maximized");
driver = new ChromeDriver(options);

5
对我没用,它继续以新的干净会话开始。 - singe3
2
这个解决方案对我也没用。 options = webdriver.EdgeOptions() options.add_argument("user-data-dir=C:\\Users\\user_name\\AppData\\Local\\Microsoft\\Edge\\User Data") driver = webdriver.Edge(options=options) driver.maximize_window() - Ajmal Moideen

9

你应该尝试这个。

op.addArgument("--user-data-dir=C:/Users/username/AppData/Local/Google/Chrome/User Data/");

op.addArgument("--profile-directory=Profile 2");

7
在Linux上,Chrome存储个人资料的路径。
String chromeProfilePath = "/home/(user)/.config/google-chrome/Profile3/";

创建ChromeOptions对象,禁用扩展并通过".addArguments"添加要使用的配置文件。
ChromeOptions chromeProfile = new ChromeOptions();
chromeProfile.addArguments("chrome.switches", "--disable-extensions");
chromeProfile.addArguments("user-data-dir=" + chromeProfilePath);

如JasonG所说,从这一点开始,Google Chrome将在你提供的字符串后附加\Default。
在/Profile3目录下有一个"/Default"文件夹,所以我做的是...
我复制了“/Profile3”的内容到“/Default”文件夹中。
像往常一样设置浏览器系统属性和路径,调用接收ChromeOption参数的构造函数即可正常工作。
WebDriver driver = new ChromeDriver(chromeProfile);

这个对我有效!谢谢,Thiago和JasonG!我尝试将我的现有配置文件“Profile 6”重命名为“selenium”,并将“Profile 6”的内容复制到Windows 10下的“selenium \ Default”下,它起作用了。 - ImtiazeA
2
在 Mac 上,我使用了 String chromeProfilePath = "/Users/<User Name>/Library/Application Support/Google/Chrome"; - GalAbra

3

我将默认配置文件复制到其他文件夹,然后连接到这个副本。

ChromeOptions options = new ChromeOptions();
options.AddArgument("--user-data-dir=C:\\AnyFolder");
driver = new ChromeDriver(options);

所以它使用默认配置文件。

1

我在Windows上尝试过以下代码,结果有效:

String userProfile= "C:\\Users\\user_name\\AppData\\Local\\Google\\Chrome\\User Data\\Default\\";
ChromeOptions options = new ChromeOptions();
options.addArguments("user-data-dir="+userProfile);
options.addArguments("--start-maximized");
WebDriver driver = new ChromeDriver(options);
driver.get("http://www.google.com");

如何知道它是否在运行?
一个方法是在不杀死先前的 Chrome 实例的情况下两次运行程序。如果配置文件有效,您将在第一个浏览器窗口中看到第二个实例“作为新标签页”。如果它没有工作,您会得到第二个实例“作为新的浏览器窗口”。


0

以上的解决方案都没对我起作用。经过数小时不懈的研究和尝试,我已经找到了这个解决方法。

        System.setProperty("webdriver.chrome.driver", "/usr/local/bin/chromedriver");
        ChromeOptions chromeOptions = new ChromeOptions();
        chromeOptions.addArguments("--start-maximized");
        //chrome://version/
        
        chromeOptions.addArguments("--user-data-dir=/home/{username}/.config/google-chrome");
        //load default profile
        chromeOptions.addArguments("--profile-directory=Default");

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接