我可以执行以下代码来移动滑块手柄,但是浏览器中触发的事件没有发生。
page.execute_script(%Q($('#slider_handicap').slider('values',1,30)))
正确地将右手柄设置为30,但我需要它表现得好像我实际上是在抓住鼠标并将手柄拖动到30然后释放。
答案 0 :(得分:12)
resynchronize已从Capybara 2.0中删除,因此user853088对Selenium的回答现在如下所示:
module CapybaraSeleniumExtension
def drag_by(right_by, down_by)
driver.browser.action.drag_and_drop_by(native, right_by, down_by).perform
end
end
答案 1 :(得分:11)
我之前延长了水豚的拖拉 它可以按给定的偏移量移动元素。
你可以尝试
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)
但它可能不适合滑块的比例。
原作是
有几句谨慎的话。