我正在使用Ruby + Watir + Cucumber + Watir + CeezyPO + ....,在一个测试中,我有下一个div元素:
<div class="slider-importe ui-slider ui-corner-all ui-slider-horizontal ui-widget ui-widget-content"><div class="ui-slider-range ui-corner-all ui-widget-header ui-slider-range-min" style="width: 50.3384%;"></div><span tabindex="0" class="ui-slider-handle ui-corner-all ui-state-default" style="left: 50.3384%;"></span></div>
这只是金额滑块。
在测试中,我想单击滑块的任意位置,然后检查显示在字段文本中的金额结果。
我已经为div定义了Page对象:
div(:slider_amount, :xpath => '//*[@id="simulatorParent"]/div[1]/div[1]/div[1]')
然后我可以在相应的步骤中使用它:
page.slider_amount_element.click
有关俗气的Page对象的参考:https://www.rubydoc.info/github/cheezy/page-object/PageObject/Accessors#div-instance_method
以这种方式使用它,我可以单击滑块中间的位置,这没关系。但是,如何在滑块的任何位置单击?
答案 0 :(得分:0)
您将需要使用Selenium的ActionBuilder-特别是#move_to
方法。不幸的是,Watir以及因此的Page-Object尚未围绕动作(feature request #829)构建包装。
所需的代码是:
xoffset = 50 # how far right from the top-left corner
yoffset = 100 # how far down from the top-left corner
page.browser.driver.action.move_to(page.slider_amount_element.element.wd, xoffset, yoffset).click.perform
page
是您的PageObject。