2015-01-30 4 views
1

В настоящее время я использую Capybara/Poltergeist с PhantomJS. Есть ли способ получить файлы, загруженные «браузером», используя эту настройку (например, которые будут получены после перехода на URI)?Получить файлы, загруженные с помощью Capybara

Либо URI файла, либо сам файл будет отличным. Заранее спасибо!

+0

Какое время полтергейста скачать и что вы хотите тест для файла? – shoji

+0

Полтергейст пытается загрузить CSV-файл; Я хочу проверить фактический контент, чтобы убедиться, что он как и ожидалось. – Daniel

+0

Спасибо. Как насчет этой статьи http://it.fyber.com/blog/2012/11/29/capybara-poltergeist-and-csv-downloads/ – shoji

ответ

-1

Одним из раствора это - http://it.fyber.com/blog/2012/11/29/capybara-poltergeist-and-csv-downloads/


Другой заключается в использовании библиотеки CSV Ruby.

Загрузить CSV-файл здесь.

id,name,note 
1,name1,note1 
2,name2,note2 
3,name3,note3 

И, файл спецификации

require 'csv' 

feature "Products", :type => :feature do 
    describe "Download CSV" do 
    # ... click csv download button by Capybara 

    rows = CSV.parse(page.body, :row_sep => "\r\n", :force_quotes => true) 
    # [["id", "name", "note"], ["1", "name1", "note1"], ["2", "name2", "note2"], ["3", "name3", "note3"]] 

    # assert csv header 
    header = rows[0] 
    expect(header).to eq ["id", "name", "note"] 

    # assert csv rows 
    # it's better to define expected csv rows and use `each` method 
    expect(rows[1]).to eq ["1", "name1", "note1"] 
    expect(rows[2]).to eq ["2", "name2", "note2"] 
    expect(rows[3])>to eq ["3", "name3", "note3"] 
    end 
end 
+1

Библиотека CSV Ruby не помогает - поскольку page.body не будет содержать CSV, если вы нажмете кнопку загрузки. – SamStephens

+0

@SamStephens Я попробовал 'CSV.parse (page.body)' on feature spec. Я сделал это. Пожалуйста подтвердите. – shoji

+0

page.body не будет содержать CSV, если вы не сделали что-то еще. Обычно CSV должен обслуживаться с типом контента text/csv, что заставляет Poltergeist загружать его, а не рассматривать его как страницу. Это поведение, с которым ссылается статья fyber.com, на которую вы ссылаетесь. CSV.parse полезен, когда у вас есть доступ к содержимому файла CSV, но вопрос не в синтаксическом анализе CSV - речь идет о доступе к содержимому файла. – SamStephens

Смежные вопросы