我一直在寻找使用Java设置Chrome驱动程序首选项的方法,但过去两天没有成功。
但是我已经通过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类。经过进一步调查,我发现可以通过capabilities.setCapability设置"switches"和"prefs",最终得到以下结果:
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)后,上面的代码与 Maps 一起按预期工作,现在唯一的问题是它们已经弃用了构造函数 ChromeDriver(DesiredCapabilities capabilities),并建议我使用 ChromeOptions 类,但我无法让其在上述情况下起作用。