我能够执行以下代码来移动滑块手柄,但是浏览器中触发的事件没有发生.
page.execute_script(%Q($('#slider_handicap').slider('values',1,30)))
这正确地将右手柄设置为30,但我需要它表现得好像我实际上是在抓住鼠标并将手柄拖动到30然后释放.
解决方法
我之前拖延了水豚.
它可以按给定的偏移量移动元素.
它可以按给定的偏移量移动元素.
你可以试试
module CapybaraExtension def drag_by(right_by,down_by) base.drag_by(right_by,down_by) end end module CapybaraSeleniumExtension def drag_by(right_by,down_by) resynchronize { driver.browser.action.drag_and_drop_by(native,right_by,down_by).perform } end end ::Capybara::Selenium::Node.send :include,CapybaraSeleniumExtension ::Capybara::Node::Element.send :include,CapybaraExtension
然后
page.find('#slider_handicap').drag_by(30,0)
但它可能不适合滑块的比例.
原来是
> Capybara::Node::Element#drag_to
> Capybara::Selenium::Node#drag_to
> Selenium :: WebDriver :: ActionBuilder drag_and_drop和drag_and_drop_by
有几句谨慎的话.
>此扩展可能取决于驱动程序的类型和版本驱动程序.>这种拖动测试可能导致维护困难.