2011-07-17 40 views
19

我正在使用水豚1.0.0,並且我的頁面中有一個鏈接,當鼠標懸停在該模塊上時,鏈接會顯示。所以我想在測試中觸發鼠標,這樣我就可以點擊那個隱藏的鏈接。 我GOOGLE了它,但無法找到適合我的解決方案。你們能幫助我嗎?無法在水豚測試中觸發鼠標事件

回答

12

我選擇使用WebKit的水豚,而可悲的是我不得不求助於執行JavaScript使用jQuery:

page.execute_script('$(".ClassSelector").trigger("hover")') 
+2

人們需要停止提示這一點。總是有方法使用水豚,驅動程序或本地元素來做到這一點。執行腳本立即執行,並且不尊重任何類型的範圍。 – Senjai

+0

你能提供你在這裏描述的每種方法的代碼示例嗎? –

1

我還有很多麻煩讓它工作。網上有很多相互矛盾的信息。以下是我做的:

設置:導軌3.2.1,1.1.2水豚,rspec的2.8.0,硒的webdriver 2.20.0

page.execute_script "$('tr.user-#{user.id}').trigger('mouseover')"

這將導致先前隱藏鏈接出現(憑藉jQuery的懸停功能),然後可以訪問have_linkclick_link

注意:你做不是想寫page.evaluate_script,因爲這不起作用。


編輯:嗯,我剛剛意識到@凱利 - 薩頓的解決方案是我的一樣。所以我可以證實這一點。

6

This commit添加了懸停方法。它具有在元素中包含css懸停效果的優點。

用法:

find('#posts .post .comments .comment').hover 
0

可見性問題,有時它有助於改變窗口大小的吵鬧鬼。我在spec_helper.rb

Capybara.register_driver :poltergeist do |app| 
    Capybara::Poltergeist::Driver.new(app, window_size: [1280, 600]) 
    end 
0

幹過 除了使用或者find('#element').hoverpage.execute_script "$('#element_2').trigger('mouseover');"一個還必須通過js: truedescribe塊,以打開JavaScript(除非你做了,在您的配置)。這使我絆倒了一下。