如何使用watir webdriver和ruby自动执行滑块?
我正在尝试使用watir webdriver和ruby自动化一个jQueryUI滑块,但运气不好。我希望能够操纵滑块来增加或减少值。我到处搜索,问了几位同事,但没有人回答。我附加了一段HTML代码的滑块。任何帮助都将不胜感激 URL链接:(价格范围滑块) 我没有为滑块做任何编码,因为我不知道如何去做。如果我能走上正确的道路,那就太棒了。而且HTML代码似乎没有显示在我所问的问题上如何使用watir webdriver和ruby自动执行滑块?,ruby,watir,watir-webdriver,Ruby,Watir,Watir Webdriver,我正在尝试使用watir webdriver和ruby自动化一个jQueryUI滑块,但运气不好。我希望能够操纵滑块来增加或减少值。我到处搜索,问了几位同事,但没有人回答。我附加了一段HTML代码的滑块。任何帮助都将不胜感激 URL链接:(价格范围滑块) 我没有为滑块做任何编码,因为我不知道如何去做。如果我能走上正确的道路,那就太棒了。而且HTML代码似乎没有显示在我所问的问题上 这是一个Jquery小部件,一旦点击其中一个句柄,它就会出现(查看脚本)以响应按键操作。控制柄是链接对象,在一对di
这是一个Jquery小部件,一旦点击其中一个句柄,它就会出现(查看脚本)以响应按键操作。控制柄是链接对象,在一对div内,外部具有ID值“slider range” 您应该能够通过
browser.div(:id=>'slider range').link(:index=>n)对它们进行寻址。
其中n=0表示左侧,n=1表示右侧
请先手动尝试
- 单击滑块的左手柄
- 然后按键盘上的箭头键。。每按一次左右箭头键,它将向上或向下移动1K(磅)李>
- 将其向右移动后,单击Home键,它应重置为其最小值
- 对右手柄重复上述操作,但使用结束键将其重置为最右侧
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
非常感谢你,恰克。我让它工作了。以下是我使用的脚本:
@browser.link(:xpath, "/html/body/div/div[3]/div[4]/div/div/div/a").send_keys :arrow_right
仍然需要一些调整,但我现在应该没事了。这很有效。我们刚刚在我们的网站上添加了这些滑块,我的第一个想法是“我们如何实现自动化!” 我想添加一个示例,它将提供完整的代码,供人们公开使用。下面是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
为了实现这一点,我使用了Rspec和Watir Webdriver以及页面对象gem:
div(:slider, id: "slider-range") #in page file
#then in spec file
browser.slider_element.input.send_keys :home
这个答案来自一个指向演示页面的链接,您已经尝试过的内容将使其更易于帮助。感谢您添加此链接。。这就容易多了。在使用该页面时,请务必阅读他们的条款,并确保您使用该页面所做的操作不会违反他们的使用条款。感谢您将在明天上午尝试使用该页面。如果成功,我会发布解决方案,否则会让你知道我做了什么。再次感谢您为我指明了正确的方向为什么xpath?这只会让你看不到你的代码在做什么,也会让它变得非常脆弱,对页面布局的更改会一直导致这种中断。xpath是可怕的东西,只有在没有其他东西可用时才使用它。在您提供的页面上,有一个方便的div ID值,用于保存用于滑块范围的内容,它看起来非常静态(比页面上的div嵌套更静态。为什么不使用`browser.div(:ID=>'slider range')。link(:index=>1)。改为发送_键:arrow_right'?您是一个Selenium用户吗?(只是好奇)似乎习惯于Selenium的人会沉迷于通过这些可怕的xpath表达式来选择东西,这些表达式非常脆弱且难以阅读。我的意思是,两个月后,你会知道那里正在与什么元素进行交互吗?你会花多长时间通过DOM来跟踪它。将其与使用进行比较正确使用Watir api,您可以立即识别哪个div持有要向其发送密钥的控件。我是Watir用户,从未真正使用Selenium达到使用Watir webdriver的水平。我完全理解您的来源。我总是通过显示实际元素来进行编码。在这个特定示例中使用xpath。(不会再犯同样的错误)。无论如何,再次感谢您的反馈,我采纳了您传递的建议。我会尽量远离XPath有时这是唯一可行的识别方法,但大多数情况下,有更好的替代方法。请享受使用Watir的乐趣!