2011-06-17 66 views
8

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

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

回答

2

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

+0

嗯...我一定在做一些愚蠢的事情。我试过了一行:page.driver.browser.fireEvent(选择器,“mouseover”)在我的网页步骤,但我得到以下错误:未定义的方法'fireEvent'为#(NoMethodError)有什么想法? – 2011-06-19 23:46:34

+0

@borrible你有任何示例代码来做到这一点?我有同样的问题。 – Chet 2012-07-25 19:34:15

0

我曾在类似的一个我用下面看到这可能会帮助你。

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

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

感谢

0

我终于成功地让水豚+硒司机“悬停”在一个元素。这是我正在使用的代码:

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

对我不起作用 – 2013-02-19 12:29:54

3

这个问题已经过了几年了,所以答案可能已经改变。在更新版本的水豚中,有几种不同的方式可以做到这一点,具体取决于您使用的驱动程序。

硒,您可以执行JavaScript的:硒的webdriver的

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

新版本支持悬停方法:

find('#element').hover 

对于水豚,WebKit的,驱动程序支持的元素上触发事件:

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

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

+0

第二种形式('.hover')触发css':hover'规则,另外两个似乎不(它们只触发mouseover事件的javascript处理程序)。我使用'.hover',例如在点击它们之前使隐形链接淡入。 – artm 2013-09-30 11:46:29

相关问题