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

时间:2013-01-23 13:20:29

标签: java google-chrome profile selenium-webdriver

我遇到了让Selenium加载镀铬配置文件的麻烦。

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");

它开始很好并且工作得很完美,但是我想要加载默认配置文件,因为我想在启用了一些Extensions并测试一些首选项的情况下测试它。

有人知道为什么这段代码不起作用吗?

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

7 个答案:

答案 0 :(得分:24)

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

我发现Chrome会将\Default附加到user-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

答案 1 :(得分:16)

这些组合确实对我有用:)

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);

答案 2 :(得分:5)

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);

答案 3 :(得分:2)

我在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实例的情况下运行程序两次。如果配置文件有效,您将在第一个浏览器窗口中看到第二个实例“作为新选项卡”。如果它不起作用,则将第二个实例“作为新的浏览器窗口”。

答案 4 :(得分:1)

根据ChromeDriver wiki,这是一个已知问题,目前无法实现。

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

答案 5 :(得分:1)

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

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

所以它使用默认配置文件

答案 6 :(得分:0)

在下面尝试一下

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

op.addArguments(“-profile-directory = Profile 2”);