2012-09-11 99 views
-2

在Rails 3.2我使用rspec(2.11.0)和capybara 1.1.2(並沒有安裝webrat),它做一些奇怪的事情,當我點擊一個鏈接在我的網頁上。使用rspec和capybara點擊鏈接不加載頁面

我想點擊我的主頁上的鏈接轉到另一頁。以下是基本的rspec測試。

it "should go to agents page" do 
    visit 'home' 

    #puts page.body 
    #links = page.all('a') 
    #links.each do |l| 
    # puts l.text 
    #end 

    page.find_by_id('menu_agents').click 

    puts page.body 
    #<various content asserts on page currently commented out> 
end 

我基本上去一個頁面,搶一個鏈接,然後單擊

存在鏈接。正如您通過查看控制檯中的頁面並查看鏈接列表所確認的已註釋的聲明中所看到的。我試過點擊上面的鏈接,但也使用click_link並引用該ID。在運行代碼時查看頁面的代碼和html,我可以看到元素的id。

在任何情況下,我得到以下結果:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"> 

當運行軟件rails s點擊鏈接並加載正確的頁面。同樣,當我在測試中訪問主頁時,它也會正確加載,因爲當我將主體打印到控制檯時,我會看到正確的html。

當我單擊鏈接並且頁面加載有某種類型的故障(儘管測試本身不失敗)時,似乎頁面加載出現問題。有任何想法嗎?

+0

什麼斷言你已經註釋掉了,如果測試沒有失敗,究竟是什麼問題? – declan

+0

感謝您的幫助。註釋掉的斷言是這樣的:page.has_content('Keywords')。那確實失敗了。當我在運行應用程序時查看它時,該內容確實在頁面上,但如上所述,該頁面未加載。上面顯示的結果是頁面的全部內容 - 只是DOCTYPE列表,並沒有實際的頁面內容。 – hershey

+0

你在這個頁面上使用任何類型的JavaScript?嘗試運行測試:js => true(真的不知道爲什麼會導致你看到的錯誤,但值得一試) – declan

回答

1

請試試這個:

頁面加載需要一些時間。使用睡眠功能。這需要等待一段時間。

然後使用page.find( 「#menu_agents」)。單擊代替page.find_by_id( 'menu_agents')。單擊

驗證menu_agents ID名稱不存在,在結果頁面中的任何其他地方。

注意:確保menu_agents id是唯一的。

it "should go to agents page" do 

    visit 'home' 

    sleep 5 

    page.find("#menu_agents").click 

    puts page.body 
    #<various content asserts on page currently commented out 

end 
+0

降低投票的理由? –

+1

可能'睡眠'。找到將重試,直到找到一個元素。 – adantj

相關問題