当前位置: 首页 > 面试题库 >

Selenium 2 Chrome驱动程序首选项Java等效于RubyBindings

陶飞英
2023-03-14
问题内容

在过去的两天里,我一直在寻找一种使用java设置chrome驱动程序的驱动程序首选项的方法,但是运气不好。

但是,我在ruby VIA RubyBindings中找到了一种解决方案,想知道是否可以使用Java等效行。

红宝石代码如下:

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)之后,上面带有Maps的代码按预期工作,现在唯一的问题是它们不赞成使用构造函数ChromeDriver(DesiredCapabilities功能),并建议我使用ChromeOptions类,但无法在上述情况下使用。

以下是Wiki页面,说明了ChromeOption和DesiredCapabilities的使用:http
:
//code.google.com/p/chromedriver/wiki/CapabilitiesAndSwitches


问题答案:

Ruby绑定实际上将其扩展为:

{
   "download": {
      "prompt_for_download": false,
      "default_directory": "/path/to/dir"
    }
}

尝试像这样构建Java prefs对象,然后查看它是否有效。字符串vs boolean false也可能是一个问题。



 类似资料:
  • 问题内容: 有没有一种方法可以通过它的Java驱动程序修改MongoDb中某个键的值。我尝试了以下方法: 但是这两个功能完全用更新的文档替换了查询的文档。在mongo shell中使用$ set的情况下,仅更新特定键值之一的方法是什么(除了制作一个完全复制了所有字段并且更新了一个字段的全新Document)。 问题答案: 尝试这样的事情: 还要看这个例子。

  • 我使用datastax java驱动程序构造了一个select查询。我使用限制选项设置限制。但我看到另一个属性也可以设置 setFetchSize(int大小)

  • 问题内容: 我是一名.Net开发人员,开始为Android开发Java,并想知道考虑诸如.Net程序集之类的Java软件包是否正确。 问题答案: 没有。 最好的比较是与Java ARchive(Jar)文件。Java使用包来控制名称空间,并且与C#的名称空间非常相似。 这是我比较环境的方式

  • 我见过很多关于等待Selenium Web驱动程序(专门针对Java)的方法(比如这一个)。然而,应用这里的方法似乎并不奏效。 我试图通过在哈希表中的值中循环来测试用户查询结果。我在下面的代码中尝试了两种方法:等待Document.ReadyState和等待Class选择的项的加载。然而,看起来列表是在创建all,而没有留下完成元素刷新的时间。 我有时会出现以下错误,实际上可能是元素更新的时候。我

  • 我正在编写一个与我们的一个系统交互的硒脚本。在我们的系统中,有一个按钮,当按下时,它只能正确加载页面大约一半的时间(它只是在每隔一个场合加载无限长的时间),因此我不能依赖默认的硒等待页面加载。因此,我想按下按钮,并在打开新窗口之前立即关闭Web浏览器以继续执行脚本。不幸的是,我无法解决按钮本身的问题。 我目前的代码: 目前,System.out不太可能达到,因为一旦action.perform()

  • 问题内容: 我正在尝试禁用Chrome控制台的输出。如果我通过–start-maximized选项,则可以正常工作。我可能输入了错误的命令? 我也试过 输出量 已启动的ChromeDriver端口= 26703版本= 23.0.1240.0日志= / Brett / workspace / TestNG / chromedriver.log [1214/161331:ERROR:ipc_sync_