如何从Capybara和ChromeDriver中拖动jQuery滑块手柄



我能够执行以下代码来移动滑块手柄,但是浏览器中触发的事件没有发生。

page.execute_script(%Q($('#slider_handicap').slider('values',1,30)))

这正确地将正确的手柄设置为 30,但我需要它的行为就像我实际上拿起鼠标并将手柄拖动到 30 然后释放一样。

重新同步已从 Capybara 2.0 中删除,因此 user853088 对硒的答案现在如下所示:

module CapybaraSeleniumExtension
  def drag_by(right_by, down_by)
    driver.browser.action.drag_and_drop_by(native, right_by, down_by).perform
  end
end

我之前扩展了水豚拖拽。
它可以按给定的偏移量移动元素。

你可以试试

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)

但它可能不适合滑块的比例。

原件是

  • 水豚::节点::元素#drag_to
  • 水豚::硒::节点#drag_to
  • Selenium:: WebDriver::ActionBuilder drag_and_drop and drag_and_drop_by

有几句警告。

  • 此扩展可能取决于驱动程序的类型和版本司机。
  • 这种拖拽的测试可能会导致维护困难。

最新更新