我遇到了让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进行了测试。
答案 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,这是一个已知问题,目前无法实现。
答案 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”);