使用Capybara和Selenium悬停在元素上

时间:2011-06-17 06:34:01

标签: selenium cucumber capybara

我在页面上有一个链接,只有当鼠标悬停在某个元素上时才会出现。但我无法弄清楚如何模仿这个,然后点击链接,这样我就可以使用Capybara和Selenium进行黄瓜测试。

任何人都知道如何做到这一点?我已经尝试执行javascript并且还尝试直接与selenium驱动程序交谈,但到目前为止我没有太多运气......

4 个答案:

答案 0 :(得分:3)

这个问题已经有几年了,所以答案可能已经改变了。在较新版本的Capybara中,根据您使用的驱动程序,有几种不同的方法可以执行此操作。

对于selenium,您可以执行javascript:

page.execute_script '$("#element").trigger("mouseover")'

较新版本的selenium-webdriver支持悬停方法:

find('#element').hover

对于capybara-webkit,驱动程序支持触发元素上的事件:

find('#element').trigger(:mouseover)

我最初从herehere找到了这个问题的答案。

答案 1 :(得分:2)

fireEvent事件中使用Selenium的mouseover,然后暂停所需的悬停时间。

答案 2 :(得分:0)

我曾经使用过类似的用户,看下这可能对你有帮助。

使用Selenium IDE。
1.导航到所需页面 2.启动selenium IDE并获取Link目标 3.将命令更改为 mouseOver 双击Selenium IDE中的命令 4.它将显示您需要的链接。
5.再次开始录制并录制所需的链接。

当您双击mouseOver命令时,它会通过IDE创建鼠标模拟,您可以使用鼠标来记录弹出链接。

由于

答案 3 :(得分:0)

我终于成功让Capybara + Selenium驱动程序“悬停”在一个元素上。这是我正在使用的代码:

module Capybara
  module Node
    class Element
      def hover
        @session.driver.browser.action.move_to(self.native).perform
      end
    end
  end
end