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

前端之家收集整理的这篇文章主要介绍了如何从Capybara和ChromeDriver中拖动jQuery滑块手柄?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我能够执行以下代码来移动滑块手柄,但是浏览器中触发的事件没有发生.
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

有几句谨慎的话.

>此扩展可能取决于驱动程序的类型和版本驱动程序.>这种拖动测试可能导致维护困难.

猜你在找的jQuery相关文章