使用 Java 使用 Selenium WebDriver 加载 Chrome 配置文件
Posted
技术标签:
【中文标题】使用 Java 使用 Selenium WebDriver 加载 Chrome 配置文件【英文标题】:Load Chrome Profile using Selenium WebDriver using java 【发布时间】:2013-01-06 23:47:45 【问题描述】:我在让 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 配置文件?非常感谢! 【参考方案1】:这是一个老问题,但我仍然无法让它工作,所以我做了更多研究以了解发生了什么。 @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,请使用 options.addArguments("profile-directory=Profile 1"); 嗨,你能指导我看一个教程,关于如何做到这一点 - 如何为你的驱动程序添加 chrome 配置文件?非常感谢!【参考方案2】:这些组合对我有用 :)
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);
【讨论】:
对我不起作用,它会继续从新的干净会话开始 这个解决方案对我也不起作用。 ` 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()`【参考方案3】: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);
【讨论】:
这个对我有用!谢谢,蒂亚戈和杰森G!我尝试将我现有的配置文件“Profile 6”重命名为“selenium”,并在 Windows 10 上的“selenium\Default”下复制了“Profile 6”的内容,并且成功了。 在 Mac 上我用过String chromeProfilePath = "/Users/<User Name>/Library/Application Support/Google/Chrome";
【参考方案4】:
你应该试试这个
op.addArgument("--user-data-dir=C:/Users/username/AppData/Local/Google/Chrome/User Data/");
op.addArgument("--profile-directory=Profile 2");
【讨论】:
【参考方案5】:我将默认配置文件复制到任何其他文件夹,然后我确实连接到此副本
ChromeOptions options = new ChromeOptions();
options.AddArgument("--user-data-dir=C:\\AnyFolder");
driver = new ChromeDriver(options);
所以它使用默认配置文件
【讨论】:
【参考方案6】:我在 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 实例。如果配置文件有效,您将在第一个浏览器窗口中看到第二个实例“作为新选项卡”。如果它不起作用,您将获得第二个实例“作为新的浏览器窗口”。
【讨论】:
【参考方案7】:根据 ChromeDriver wiki,这是一个已知问题,目前不可能。
https://code.google.com/p/selenium/wiki/ChromeDriver
【讨论】:
【参考方案8】:以上这些解决方案都不适合我。经过几个小时的不懈研究和尝试,我已经找到了这个解决方案
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");
【讨论】:
以上是关于使用 Java 使用 Selenium WebDriver 加载 Chrome 配置文件的主要内容,如果未能解决你的问题,请参考以下文章
[Selenium+Java] Execute JavaScript based code using Selenium Webdriver
selenium-java自动化测试环境搭建中的问题以及解决方法