使用 selenium ruby​​ capybara 拖放

Posted

技术标签:

【中文标题】使用 selenium ruby​​ capybara 拖放【英文标题】:drag and drop using selenium ruby capybara 【发布时间】:2017-10-14 20:01:01 【问题描述】:

我正在尝试将一个元素拖放到页面上的另一个元素。我的代码运行没有任何错误。但阻力实际上并没有发生。 它能够找到这两个元素。我尝试了下面列出的所有选项:

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

【问题讨论】:

你读过this SO question吗? 【参考方案1】:

如果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

【讨论】:

谢谢,会试试这个,我猜这应该有帮助,会发布输出。 用 execute_script 尝试过,还是同样的问题,测试运行没有任何错误,但拖放实际上没有发生。任何其他解决方案都会非常有帮助 @aruna 你用execute_script 尝试了什么? - 任何解决方案都将完全取决于您的应用程序如何实现拖放检测,因此如果您不弄清楚您的应用程序正在寻找什么,真的没有其他解决方案可以提出。

以上是关于使用 selenium ruby​​ capybara 拖放的主要内容,如果未能解决你的问题,请参考以下文章

如何在 selenium webdriver 中自动化桌面通知 - ruby

如何让 Selenium/Ruby 机器人在执行操作之前等待?

无法在 Mac 上设置 ruby​​-selenium Webdriver

使用 selenium ruby​​ capybara 拖放

日志中的selenium webdriver ruby 警告消息

如何使用 Selenium WebDriver 和 Ruby 确定该元素是可点击的?