使用 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 downmouse movemouse up,而您的代码可能正在寻找 drag startdragdrag end事件等。因此,要使其正常工作,您需要使用 execute_script 创建合成事件来触发您想要的行为。如果您正在使用特定的库,有人可能已经为您很好地实现了这一点 - 例如,如果您正在使用 JQuery UI 可排序元素,则有 https://github.com/mattheworiordan/jquery.simulate.drag-sortable.js