2016-06-27 5 views
3

:私はラベルをクリックするとカピバラを使って隠れた入力に添付ファイルをテストする方法は?私はラベルの内側に入力を隠して

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

、私は、ファイルを添付して、確認します。

その後、モーダルウィンドウがポップアップし、適切なdivクラスを見つける必要があります。

カピバラの助けを借りてこれをテストするにはどうすればよいですか?

答えて

11

更新:あなたが最初の直接の前に

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

を試すことができます2.12+使用してその場合カピバラ2.12はattach_filemake_visibleオプションを追加しました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

この回答は受け入れられましたが、実際には機能しましたか?それはポルターガイストのドライバで動作するかもしれませんが、おそらくattach_fileが隠しフィールドとやりとりしないので、他のものと一緒にはいられません。 –

+0

@TomWalpoleあなたは絶対に正しいです。これを動作させるには、私のレールヘルパーに 'Capybara.ignore_hidden_​​elements = false'行を追加しなければなりませんでした。 –

+1

@TomWalpoleを 'visible:false'に設定しても役に立ちません –

4

使い方カピバラ '2.7.1':

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

これはjavascriptなしで動作します(make_visibleオプションとは異なります) –

関連する問題