ruby - "TypeError: can' t 将字符串转换为整数”当尝试在 watir-webdriver/selenium-webdriver 脚本中按住 CTRL+单击或 SHIFT+单击时

标签 ruby selenium-webdriver watir-webdriver modifiers

我正在尝试在 Chrome 浏览器上使用 watir-webdriver/selenium-webdriver 在 cucumber 脚本中定义为表格的日期选择器中选择多个项目。

日期选择器允许使用 Ctrl 和 Shift 作为修饰符。

这是单元格的代码:

<div type="button" class="datepicker_day" onclick="if(!ample.$instance(this).$isAccessible()) return; DatePicker.onSelectDay(ample.$instance(this), '2011/06/03')" onmouseover="if(!ample.$instance(this).$isAccessible()) return;if (!this.className.match(/_day-disabled/)) this.className += 'datepicker_day-hover'" onmouseout="if(!ample.$instance(this).$isAccessible()) return; if (!this.className.match(/_day-disabled/)) this.className = this.className.replace('datepicker_day-hover', '')">3</div>

这是日期选择器行为的示例 -

http://demo.essentialobjects.com/Demos/Calendar/Designs/Windows%20(Multi-Month)/Demo.aspx


我尝试过使用:

driver.action.key_down(:shift).
click(element).
click(second_element).
perform

但我收到“TypeError:无法将字符串转换为整数”。

from C:/Ruby/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.9.1/lib/selenium/webdriver/remote/response.rb:59:in `[]'
from C:/Ruby/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.9.1/lib/selenium/webdriver/remote/response.rb:59:in `add_backtrace'
from C:/Ruby/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.9.1/lib/selenium/webdriver/remote/response.rb:23:in `error'
from C:/Ruby/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.9.1/lib/selenium/webdriver/remote/response.rb:50:in `assert_ok'
from C:/Ruby/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.9.1/lib/selenium/webdriver/remote/response.rb:15:in `initialize'
from C:/Ruby/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.9.1/lib/selenium/webdriver/remote/http/common.rb:54:in `new'
from C:/Ruby/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.9.1/lib/selenium/webdriver/remote/http/common.rb:54:in `create_response'
from C:/Ruby/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.9.1/lib/selenium/webdriver/remote/http/default.rb:64:in `request'
from C:/Ruby/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.9.1/lib/selenium/webdriver/remote/http/common.rb:35:in `call'
from C:/Ruby/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.9.1/lib/selenium/webdriver/remote/bridge.rb:430:in `raw_execute'
from C:/Ruby/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.9.1/lib/selenium/webdriver/remote/bridge.rb:408:in `execute'
from C:/Ruby/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.9.1/lib/selenium/webdriver/remote/bridge.rb:274:in `sendModifierKeyToActiveElement'
from C:/Ruby/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.9.1/lib/selenium/webdriver/common/keyboard.rb:26:in `press'
from C:/Ruby/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.9.1/lib/selenium/webdriver/common/action_builder.rb:122:in `block in perform'
from C:/Ruby/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.9.1/lib/selenium/webdriver/common/action_builder.rb:121:in `each'
from C:/Ruby/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.9.1/lib/selenium/webdriver/common/action_builder.rb:121:in `perform'

有人能够在他的代码中使用这个吗? 或者有人有向鼠标事件发送修饰符的解决方案吗? 提前致谢。

最佳答案

关于 Watir-Webdriver,我向 Jari(Watir-webdriver 背后的主要驱动力)询问了这个问题,得到了以下答案,如果你非常需要这个,这可能会给你一条追求的道路

There's nothing exposed in watir-webdriver (yet), but you should be able to do it with the actions API in WebDriver (see http://rubydoc.info/gems/selenium-webdriver/2.10.0/Selenium/WebDriver/ActionBuilder). I'm not sure how well-supported this is across browsers - but from the Java tests (which are the most extensive) it looks like it's currently only supported on Firefox + Linux:

http://code.google.com/p/selenium/source/browse/trunk/java/client/test/org/openqa/selenium/interactions/CombinedInputActionsTest.java#50

我还创建了一个feature-request在 Github 上的 Watir-Webdriver 项目中,如果这是您需要的东西,您可能需要对其进行评论以表明您的需求。

关于ruby - "TypeError: can' t 将字符串转换为整数”当尝试在 watir-webdriver/selenium-webdriver 脚本中按住 CTRL+单击或 SHIFT+单击时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7865263/

相关文章:

windows - 在 Windows XP 上安装 watir-webdriver 时出现 `marshal data too short` 错误消息

ruby - 在 watir-webdriver 中将 select_list 选项转换为字符串数组?

ruby - 如何使用 Ruby Gtk 进行图像缩放和拖动选择?

ruby - 这是 Matrix 类中的 ruby​​ 错误吗?

selenium - 有没有办法防止 selenium 自动终止空闲 session ?

c# - 如何设置 selenium 3.0,在 C# 中出现错误 "The geckodriver.exe file does not exist..."

ruby - watir-webdriver 在保持浏览器打开的同时更改代理

ruby - 无法定位元素,使用 { :id= >"", :tag_name= >"select"}

c - 如何使用 c 扩展扩展我的 ruby​​ 类?

java - Try-Catch 无法捕获来自 "System.setProperty"的错误