【发布时间】:2012-04-11 06:04:12
【问题描述】:
过去两天我一直在寻找一种方法来设置使用 java 的 chrome 驱动程序的驱动程序首选项,但没有成功。
然而,我在 ruby VIA RubyBindings 中找到了一个解决方案,并想知道是否有可以用于此的 java 等效行。
ruby 代码如下:
profile = Selenium::WebDriver::Chrome::Profile.new
profile['download.prompt_for_download'] = false
profile['download.default_directory'] = "/path/to/dir"
driver = Selenium::WebDriver.for :chrome, :profile => profile
在搜索时,我发现 chrome 没有我可以像 FirefoxProfile 类那样使用的分析器,所以我开始改用 DesireCapabilities 类。在进一步调查这个问题后,我发现我可以设置 VIA 的“开关”和“首选项”功能。setCapabilitiy 并最终得到以下结果:
Map<String, String> prefs = new Hashtable<String, String>();
prefs.put("download.prompt_for_download", "false");
prefs.put("download.default_directory", "/path/to/dir");
prefs.put("download.extensions_to_open", "pdf");
DesiredCapabilities capabilities = DesiredCapabilities.chrome();
capabilities.setCapability("chrome.prefs", prefs);
dr = new ChromeDriver(capabilities);
但是我无法让它工作,默认下载目录一旦启动就永远不会更改为指定目录。我不确定我尝试设置此功能的方式是否存在问题,或者问题是否出在其他地方。
最后我最终使用了这里提出的解决方案:
http://dkage.wordpress.com/2012/03/10/mid-air-trick-make-selenium-download-files/
但我想知道是否可以更简洁地执行此操作,但只需直接设置首选项而不是使用 UI
感谢任何帮助,谢谢!
更新:
令人惊讶的是,在将 Selenium 2 更新到 2.24.1 版(以及 windows chrome 22)之后,上面带有地图的代码按预期工作,现在唯一的问题是他们不赞成使用构造函数 ChromeDriver(DesiredCapabilities 功能),而是建议我使用 ChromeOptions 类,我无法在上述情况下工作。
以下是解释 ChromeOptions 和 DesiredCapabilities 使用的 wiki 页面: http://code.google.com/p/chromedriver/wiki/CapabilitiesAndSwitches
【问题讨论】:
标签: java google-chrome webdriver selenium-webdriver