9

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

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

这正确地将右手柄设置为 30,但我需要它表现得好像我实际上是在使用鼠标并将手柄拖动到 30 然后释放。

4

2 回答 2

14

重新同步已从 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
于 2013-04-18T19:28:11.460 回答
12

我之前加长水豚拖。
它可以将元素移动给定的偏移量。

你可以试试

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)

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

原来是

有几句话要小心。

  • 此扩展可能取决于驱动程序的类型和驱动程序的版本。
  • 这种拖拽测试会导致维护困难。
于 2012-06-03T08:18:21.823 回答