2016-06-27 71 views
3

我已經隱藏輸入標籤內:如何使用水豚測試隱藏輸入文件附件?

<label for="upload"> 
    <input class="hidden" type="file" name="file[picture]"> 
</label> 

當我點擊標籤上,我附上一個文件,然後確認。

之後,模式窗口彈出,我需要找到適當的div類。

如何在水豚的幫助下測試這個?

回答

11

更新:水豚2.12添加了一個make_visible選項attach_file因此,如果使用2.12+你可以先嚐試

attach_file('file[picture]', 'path/to/file.png', make_visible: true) 

直接之前使用execute_script自己


文件輸入是一種特殊情況,因爲它們經常因樣式原因而隱藏,並且使用系統模式進行交互。水豚使得它很難以填補在頁面上隱藏字段,因爲用戶一般無法與他們進行互動,所以對於文件輸入通常的做法是用execute_script使它們可見,然後在填充它們。

execute_script("$('input[name=\"file[picture]\"]').removeClass('hidden')") # assumes you have jQuery available - if not change to valid JS for your environment 
attach_file('file[picture]', 'path/to/file.png') # takes id, name or label text of field not a random selector 
+0

make_visible:true +1 –

2

你可以做線沿線的東西:

find('label[for=upload]').click 
attach_file('input[name="file[picture]"]'), 'path/to/file.png') 

within '.modal-popup' do 
    expect(page).to have_content '.divclass' 
end 
+1

我看到這個答案被接受,但它確實工作?它可能與poltergeist驅動程序工作,但可能不會與任何其他,因爲attach_file將不會與隱藏字段 –

+0

@TomWalpole你是絕對正確的。我不得不將'Capybara.ignore_hidden_​​elements = false'行添加到我的rails helper中,以便使其工作。 –

+1

@TomWalpole設置'visible:false'沒有幫助 –

4

使用水豚'2.7.1':

attach_file('file[picture]', 'path/to/file.png', visible: false) 
+1

這個工程沒有javascript(與make_visible選項不同) –