我正在尝试使用watir-webdriver和ruby自动化Jquery UI滑块,但我没有运气。我希望能够操纵滑块来增加或减少值。我到处搜索过,问了几位同事,但没有人有答案。我正在为滑块附加一段HTML代码。任何帮助将不胜感激。
网址链接:http://www.whatcar.com/new-car-deals/(价格范围滑块)
我没有对滑块进行任何编码,因为我不知道如何去做。如果我可以设置在正确的道路上那将是非常棒的。此外,似乎HTML代码似乎没有显示在我问的问题上。
答案 0 :(得分:1)
一个Jquery小部件出现(查看脚本),一旦单击其中一个句柄,就会响应按键。句柄是链接对象,在一对div中,外部的ID具有ID值“slider-range”
你应该可以通过browser.div(:id => 'slider-range').link(:index => n)
来解决这些问题,其中n = 0表示左手,n = 1表示右手。
首先手动尝试
理论上,您可以在右侧滑块上触发点击事件以获得焦点,然后触发一些按键事件,首先将其设置为最右侧(结束),然后使用足够的左箭头将其向下移动到您想要的最高值。
对左手柄重复操作,使用主页键将其设置为左端,并使用右箭头按键移动
我现在没有时间进一步尝试并开发一个精确的脚本,但我认为你可以创建两个小函数,即使是上下范围值,并按下所需数量的按键来移动从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