2015-02-11 63 views
2

在我的申請,我有此鏈接:我如何點擊鏈接與水豚有一個方法:: post?

link_to 'Start', some_path, method: :post 

,並且在功能測試中,我需要點擊此鏈接,然後斷言頁面不包含此鏈接(相反,它應包含「停止」鏈接)

我想:

click_link 'Start' 

,但它不工作 - 無論是鏈接開始仍然是在頁面上還是我得到一個網頁與‘被重定向’文本(我用save_and_open_page)

我該如何解決這個問題?

編輯:我使用的是poltergeist驅動程序。

+0

您使用硒驅動程序? – 2015-02-11 15:04:11

+0

@IgorPantović我正在使用poltergeist驅動程序。 – maprihoda 2015-02-11 15:14:39

+0

如果您先切換到硒驅動程序以查看發生了什麼,那將是明智之舉。這應該會幫助你很多 – 2015-02-11 15:24:27

回答

0

要回答我的問題,解決方法很簡單:只需設定JS:

scenario 'some description', js: true do 

的解釋:在包含的鏈接,例如像這樣的場景真與GET之外的方法鏈接,Rails.js動態生成的表單,像這樣

<a href="url" data-method="post" rel="nofollow">...</a> 

,所以你需要告訴水豚,它應該運行使用JavaScript引擎的情況下(騷靈,在我們的例子),並且您通過JS這樣做:真正的選擇。

0

爲了避免JS /瀏覽器開銷,你也可以用純紅寶石做一個假的點擊。 例如click_ujs_link "Send"使用此代碼。

def click_ujs_link(name) 
    link = find(:link, name, {}) 
    visit_with_method link['data-method'], link['href'] 
end 

def visit_with_method(method, url) 
    page.driver.send method, url 
    visit page.driver.response.location 
end 
+0

請給你的代碼添加一些解釋 – 2016-01-11 09:26:27

相關問題