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 对其进行了测试。

4

8 回答 8

50

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

我发现 Chrome 会附加\Defaultuser-data-dir. 因此,如果您的配置文件路径指定为:

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/您将看到正在使用的实际配置文件。它将像这样列出:

配置文件路径 C:\Users\user_name\AppData\Local\Google\Chrome\User Data\Default

于 2016-01-25T19:11:04.813 回答
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);
于 2013-03-07T11:46:52.167 回答
8

你应该试试这个

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

op.addArgument("--profile-directory=Profile 2");
于 2019-12-04T16:06:14.043 回答
7

Chrome 在 Linux 上存储配置文件的路径。

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);
于 2017-03-27T21:43:13.920 回答
3

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

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

所以它使用默认配置文件

于 2013-08-15T13:30:35.903 回答
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 实例。如果配置文件有效,您将在第一个浏览器窗口中看到第二个实例“作为新选项卡”。如果它不起作用,您将获得第二个实例“作为新的浏览器窗口”。

于 2013-09-19T14:15:02.120 回答
0

根据 ChromeDriver wiki,这是一个已知问题,目前不可能。

https://code.google.com/p/selenium/wiki/ChromeDriver

于 2013-03-05T20:41:30.800 回答
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");
于 2021-10-12T17:37:50.117 回答