8

ファイルのアップロード、つまり CSV をテストしています。私のコードとブラウザのHTMLでファイルフィールドが見つかりましたが、カピバラのテスト中にファイルフィールドが見つかりませんでした。私は懸命にさまざまなアプローチを試みましたが、問題を解決できませんでした。ここで部分的に次のようになります。

#add_file_box
  %div.msg
  %h1.page-header
    = "Upload a CSV"
  %h4.title

  = form_tag dummy_path, multipart: true, class: "upload_csv" do
    = hidden_field_tag :dmp_id, @dmp.id
    .form-group
      .input-group
        %span.input-group-btn
          %span.btn.btn-primary.btn-file
            Choose file
            = file_field_tag :file, style: 'line-height: normal',  accept: "text/csv", class: "file_input"
        %input.form-control.input-custom{:readonly => "", :type => "text"}
    .form-group
      = submit_tag "Upload CSV", class: "btn btn-primary", id: "upload_csv"

そしてカピバラテストはこんな感じ

 within '.upload_csv' do
     page.attach_file('file', "#{Rails.root}/spec/acceptance/test_uploads/input_output.csv")
     click_button 'Upload'
   end

この問題を解決するのを手伝っていただければ幸いです。

4

1 に答える 1

16

Capybara 2x ( capybara issue ) は、デフォルトでは隠し要素を見つけられません。

ignore_hidden_​​elements を false に設定できます。

Capybara.ignore_hidden_elements = false

または、メソッドに :visible オプションを追加するだけです:

within '.upload_csv' do
  attach_file('file', "#{Rails.root}/spec/acceptance/test_uploads/input_output.csv", visible: false)
    click_button 'Upload'
end

これで私の問題は解決しました。

注:オプションは、:visible内部で動作するほとんどの Capybara メソッドCapybara::Query( findall、など)でもサポートされています。has_css?have_selector

于 2014-08-13T10:59:30.030 に答える