如何使用watir-webdriver和ruby自动化滑块?

时间:2011-11-16 12:44:47

标签: ruby watir watir-webdriver

我正在尝试使用watir-webdriver和ruby自动化Jquery UI滑块,但我没有运气。我希望能够操纵滑块来增加或减少值。我到处搜索过,问了几位同事,但没有人有答案。我正在为滑块附加一段HTML代码。任何帮助将不胜感激。

网址链接:http://www.whatcar.com/new-car-deals/(价格范围滑块)

我没有对滑块进行任何编码,因为我不知道如何去做。如果我可以设置在正确的道路上那将是非常棒的。此外,似乎HTML代码似乎没有显示在我问的问题上。

4 个答案:

答案 0 :(得分:1)

一个Jquery小部件出现(查看脚本),一旦单击其中一个句柄,就会响应按键。句柄是链接对象,在一对div中,外部的ID具有ID值“slider-range”

你应该可以通过browser.div(:id => 'slider-range').link(:index => n)来解决这些问题,其中n = 0表示左手,n = 1表示右手。

首先手动尝试

  • 单击滑块的左手柄
  • 然后按键盘上的箭头键......每次向右或向左箭头按键,它将向上或向下移动1K(磅)。
  • 一旦您向右移动,请单击Home键,它应重置为其最小值
  • 重复上面的右手柄,但使用End键将其重置为最右边。

理论上,您可以在右侧滑块上触发点击事件以获得焦点,然后触发一些按键事件,首先将其设置为最右侧(结束),然后使用足够的左箭头将其向下移动到您想要的最高值。

对左手柄重复操作,使用主页键将其设置为左端,并使用右箭头按键移动

我现在没有时间进一步尝试并开发一个精确的脚本,但我认为你可以创建两个小函数,即使是上下范围值,并按下所需数量的按键来移动从5K下降到正确的数量,上部从100k下降

请注意,这个东西是非常非常受事件驱动的,它会响应(至少在使用它时观看开发工具时)被鼠标悬停,mousedown,mouseup等等。如果使用click不能正常工作注意控制因此它将响应按键,尝试使用onmousedown事件。

使用答案中的代码,将左滑块移动到12K,我试试

browser.div(:id => 'slider-range').link(:index => 0).click  #make sure it has focus
browser.div(:id => 'slider-range').link(:index => 0).send_keys :home #set to 5K    
7.times do
   browser.div(:id => 'slider-range').link(:index => 0).send_keys :arrow_right
end 

答案 1 :(得分:0)

非常感谢Chuck。我搞定了。这是我使用的脚本:

@browser.link(:xpath, "/html/body/div/div[3]/div[4]/div/div/div/a").send_keys :arrow_right

仍需要一些调整,但我现在应该好了。

答案 2 :(得分:0)

这很有效。我们刚刚将这些滑块添加到我们的网站中,我的第一个想法是“我们如何实现自动化?”

我想添加一个示例,该代码将公开供人们进行试验。以下内容与jqueryui.com上的示例进行交互。

require "watir-webdriver"
@browser = Watir::Browser.new :chrome
@browser.goto "http://jqueryui.com/slider/#default"
@browser.frame(:class => "demo-frame").span(:class =>"ui-slider-handle").click
@browser.frame(:class => "demo-frame").span(:class =>"ui-slider-handle").send_keys :home 
puts "clicked home"
7.times do
  @browser.frame(:class => "demo-frame").span(:class =>"ui-slider-handle").send_keys :arrow_right
end 

答案 3 :(得分:0)

为了使用Rspec和Watir-Webdriver与我使用的Page-Object gem实现这一点:

div(:slider, id: "slider-range") #in page file
#then in spec file
browser.slider_element.input.send_keys :home

这个答案来自http://watir.com/guides/special-keys/