Selenium 2 chrome驱动程序首选项java相当于RubyBindings
我一直在寻找一种方法来设置过去两天使用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类。 在对此问题进行进一步调查后,我发现我可以设置“开关”和“prefs”VIAfunction。设置可用性并最终得到以下结果:
Map prefs = new Hashtable(); 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);
但是我无法使其正常工作,默认下载目录在启动后从未更改为指定目录。 我不确定我是如何设置此function的问题,或者问题是否存在于其他地方。
最后我最终使用了这里提出的解决方案:
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(DesiredCapabilitiesfunction),而是建议我使用ChromeOptions类,我无法在上面的场景中使用它。
以下是维基页面,解释了ChromeOptions和DesiredCapabilities的使用: http : //code.google.com/p/chromedriver/wiki/CapabilitiesAndSwitches
Ruby绑定实际上扩展到:
{ "download": { "prompt_for_download": false, "default_directory": "/path/to/dir" } }
尝试构建这样的Java prefs对象,看看它是否有效。 字符串vs布尔值false也可能是个问题。
试试这个(原谅我的java很生锈,但希望你明白了)
Dictionary download = new Dictionary(); download["default_directory"] = "/path/to/dir"; Dictionary prefs = new Dictionary(); prefs["browser"] = download; DesiredCapabilities capabilities = DesiredCapabilities.chrome(); capabilities.setCapability("chrome.prefs", prefs); WebDriver driver = new ChromeDriver(capabilities);
更新:我只是浏览了代码,似乎我上面建议的内容可能无法正常工作。 ruby chrome profile类创建了带有chrome配置文件结构的zip文件,以支持chrome首选项。 我在java中找不到这样的设施代码。 在java中有一个Firefox配置文件可以为firefox做类似的事情,但显然这对chrome来说不起作用。 简而言之,java中还不支持此function。
较新版本(我测试过Chrome 44.0.2403.125,Selenium 2.47.1和ChromeDriver 2.17.340128)可以使用以下内容:
ChromeOptions options = new ChromeOptions(); Map prefs = new HashMap(); prefs.put("download.default_directory", "/path/to/directory"); options.setExperimentalOption("prefs", prefs); ChromeDriver chromeDriver = new ChromeDriver(options);
- 在Android 5的WebView上支持WebGL
- 如何使用Selenium WebDriver在新标签页(chrome)中打开链接?
- 获取无法使用java / selenium将元素集中在chrome和edge中
- Chrome错误:您使用的是不受支持的命令行标志: – ignore-certifcate-errors。 稳定性和安全性将受到影响
- 适用于Chrome和Internet Explorer的GWT Developer插件 – 防止安装错误
- 在Selenium的inconginto模式下运行chrome浏览器
- Native Messaging主机尝试发送长度为977472013字节的消息
- 我的Java Applet会在Chrome 45上运行吗?
- 是否已弃用使用浏览器在Chrome中实时查看EventSource?