使用 selenium ruby 拖放水豚
drag and drop using selenium ruby capybara
我正在尝试将一个元素拖放到页面上的另一个元素。我的代码运行没有任何错误。但阻力实际上并没有发生。
它能够找到这两个元素。我尝试了下面列出的所有选项:
driver.browser.action.drag_and_drop(fromobject.native,
toobject.native).perform
fromobject.drag_to toobject
driver.browser.action.move_to(toobject.native).release.perform
fromobject.drag_and_drop_on toobject
如果 from_element.drag_to to_element
对您不起作用,那么可能无法直接使用 capybara/selenium 来完成。这样做的原因是驱动程序中的拖放支持高度依赖于您的代码正在寻找的事件。当前版本的 selenium 将其实现为事件 mouse down
、mouse move
、mouse up
,而您的代码可能正在寻找 drag start
、drag
、drag end
事件等。因此,要使其正常工作,您需要使用 execute_script
创建合成事件来触发您想要的行为。如果您正在使用特定的库,有人可能已经为您很好地实现了这一点 - 例如,如果您正在使用 JQuery UI 可排序元素,则有 https://github.com/mattheworiordan/jquery.simulate.drag-sortable.js
我正在尝试将一个元素拖放到页面上的另一个元素。我的代码运行没有任何错误。但阻力实际上并没有发生。 它能够找到这两个元素。我尝试了下面列出的所有选项:
driver.browser.action.drag_and_drop(fromobject.native,
toobject.native).perform
fromobject.drag_to toobject
driver.browser.action.move_to(toobject.native).release.perform
fromobject.drag_and_drop_on toobject
如果 from_element.drag_to to_element
对您不起作用,那么可能无法直接使用 capybara/selenium 来完成。这样做的原因是驱动程序中的拖放支持高度依赖于您的代码正在寻找的事件。当前版本的 selenium 将其实现为事件 mouse down
、mouse move
、mouse up
,而您的代码可能正在寻找 drag start
、drag
、drag end
事件等。因此,要使其正常工作,您需要使用 execute_script
创建合成事件来触发您想要的行为。如果您正在使用特定的库,有人可能已经为您很好地实现了这一点 - 例如,如果您正在使用 JQuery UI 可排序元素,则有 https://github.com/mattheworiordan/jquery.simulate.drag-sortable.js