使用 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 down
、mouse move
、mouse up
,而您的代码可能正在寻找 drag start
、drag
、drag 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 拖放