【问题标题】:Selenium Ruby Binding Capabilities DocumentationSelenium Ruby 绑定功能文档
【发布时间】:2014-03-25 22:51:33
【问题描述】:

我是 Selenium Ruby 绑定的新手。我想知道文档网站,在那里我可以找到适用于 Ruby 驱动程序功能的选项。

我在网上搜索过,发现大部分与 Java 相关的帖子:

https://code.google.com/p/selenium/wiki/DesiredCapabilities

我需要知道特别是 Ruby 等价于:“unexpectedAlertBehaviour”功能。

提前致谢。

添加代码:

代码

def initialize(driverType)
begin
  cap = Selenium::WebDriver::Remote::Capabilities.ie(:ignore_protected_mode_settings=>true)
  @@driver =  Selenium::WebDriver.for driverType,:desired_capabilities=>cap 
  @@driver.manage.window.maximize
rescue Exception=>e
  puts e.message
end

结束

【问题讨论】:

  • 它与语言无关。唯一的区别是如何 传递这些功能。向我们展示您目前在如何构建驱动程序方面的成果。
  • @Arran,我在我的问题中添加了代码。我有点困惑的原因是,在上面的链接中,属性是“ignoreProtectedModeSettings”,而红宝石绑定“ignore_protected_mode_settings”正在工作。

标签: ruby selenium selenium-webdriver


【解决方案1】:

从链接-Read-write capabilities我找到了信息:

在抛出 UnhandledAlertException 之前,浏览器应该如何处理未处理的警报。可能的值是“accept”、“dismiss”和“ignore”。

Key : unexpectedAlertBehaviour 
type : string ( "accept"/"dismiss"/"ignore")

你需要做的是:

require 'selenium-webdriver'

driver = Selenium::WebDriver.for :firefox
driver.get "https://www.google.com/"

ob = driver.capabilities
ob[:unexpectedAlertBehaviour] = "dismiss" # or "accept"/"ignore"

driver.capabilities 会给你Selenium::WebDriver::Remote::Capabilities 类的实例。现在,如果您想设置任何自定义功能,您需要在从调用 driver.capabilities 获得的实例上调用方法 #[]=

设置自定义后,您可以调用#to_json 方法查看您的驱动程序设置的所有当前功能:

puts ob.to_json    
# >> { "browserName":"firefox","version":"21.0","platform":"WINNT","javascriptEnabled"
# >> :true,"cssSelectorsEnabled":true,"takesScreenshot":true,"nativeEvents":true,"rot
# >> atable":false,"handlesAlerts":true,"webStorageEnabled":true,"applicationCacheEna
# >> bled":true,"databaseEnabled":true,"locationContextEnabled":true,"browserConnecti
# >> onEnabled":true,"acceptSslCerts":true,"unexpectedAlertBehaviour":"dismiss"}

如果您想验证自定义设置是否如您所愿,请通过调用方法#[] 进行验证:

puts ob[:unexpectedAlertBehaviour] # => dismiss

【讨论】:

  • 谢谢@Arup,您能否提供API 参考/Ruby 绑定教程的链接..
  • @user3098734 我已经给了你所有的文档,我写这段代码的地方。你能告诉我,你在找什么具体的?
  • 感谢您的信息。但我有点困惑的原因是,在上面的链接中,属性是“ignoreProtectedModeSettings”,而在 ruby​​ 绑定中,“ignore_protected_mode_settings”也在起作用。
  • 你在哪里设置ob[:unexpectedAlertBehaviour] = "dismiss"?它应该工作。我已经测试过
  • 请找到以下代码: def initialize(driverType) begin @@driver = Selenium::WebDriver.for driverType cap = @@driver.capabilities cap[:ignoreProtectedModeSettings] = true cap[:ignoreZoomSetting] = true cap[:unexpectedAlertBehaviour]="ignore" @@driver.manage.window.maximize rescue Exception=>e puts e.message end end
【解决方案2】:

我得到了解决方案。我们必须在创建驱动程序实例之前设置驱动程序的功能。以下代码对我有用:

 def initialize(driverType)
begin
  cap = Selenium::WebDriver::Remote::Capabilities.ie(:ignoreProtectedModeSettings=>true,:ignoreZoomSetting=>true,:unexpectedAlertBehaviour=>"accept")

  @@driver =  Selenium::WebDriver.for driverType,:desired_capabilities=>cap 

  @@driver.manage.window.maximize
rescue Exception=>e
  puts e.message
end

结束

以上代码处理保护模式、缩放设置(在某些情况下 selenium 无法识别对象)和模态警报 - 它正在接受模态错误。

希望,这对其他人有帮助:)

干杯..

【讨论】:

  • 我告诉过你——你做错了。 here 是提示。无论如何祝你好运。 :-)
  • 感谢奥雅纳的帮助 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-02-02
  • 2023-03-31
  • 1970-01-01
  • 1970-01-01
  • 2011-02-27
  • 2020-06-06
  • 1970-01-01
相关资源
最近更新 更多