2011-06-17 28 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

相關問題