Подтвердить что ты не робот

Тестовый файл огурца скачать

У кого-нибудь есть идея, как проверить загрузку файла с помощью огурца?

4b9b3361

Ответ 1

Это сработало для меня при использовании send_data, например, send_data(data, :filename => "inventory_#{Date.today.to_s}.csv", :disposition => 'attachment')

Вероятно, не лучший способ написать этот шаг, но он сработает!

Then /^I should receive a file(?: "([^"]*)")?/ do |file|
  result = page.response_headers['Content-Type'].should == "application/octet-stream"
  if result
    result = page.response_headers['Content-Disposition'].should =~ /#{file}/
  end
  result
end

Ответ 2

Я нашел этот, чтобы быть удобным способом тестирования для загрузки, его наивный способ просто проверить для заголовков, помещенных большую часть времени его разумным.

Если вы используете capbybara, тогда добавьте следующее в свой step_definitions.rb

    Then /^I should get a download with the filename "([^\"]*)"$/ do |filename|
       page.response_headers['Content-Disposition'].should include("filename=\"#{filename}\"")
    end

Внутри вашей функции вы теперь можете:

    When I follow "Export as ZIP"
    Then I should get a download with the filename "contacts_20110203.zip"

Приветствия

Ответ 3

Я запускаю селен через хром, когда я тестирую загрузку csv, я использую следующее в Ruby:

Then /^I should get a downloaded file for fleet: "(.*?)"$/ do |export|       
    puts Dir["C:/Users/**/Downloads/fleet_#{export}_export_all_*.csv"].last
end

Он просто выглядит в каталоге загрузки по умолчанию и подтверждает, что файл есть и выводит имя файла в cmd.

Ответ 4

На chrome я делаю это, открывая страницу: chrome://downloads, а затем использую теневое dom для загрузки загруженных файлов:

document
  .querySelector('downloads-manager')
  .shadowRoot.querySelector('#downloads-list')
  .getElementsByTagName('downloads-item');

Список загруженных файлов также содержит информацию, такую ​​как путь к файлу и дата загрузки.

Ответ 5

В Chrome вы можете установить возможность предоставления хром-опций. См. Ниже код

      String downloadFilepath = "path to specify download location e.g. C:\\Downloads";      
      Map<String, Object> chromePrefs = new HashMap<String, Object>();
      chromePrefs.put("profile.default_content_settings.popups", 0);
      chromePrefs.put("download.default_directory", downloadFilepath);
      ChromeOptions options = new ChromeOptions();
      options.setExperimentalOption("prefs", chromePrefs);
      DesiredCapabilities cap = DesiredCapabilities.chrome();       
      cap.setCapability(ChromeOptions.CAPABILITY, options);
      WebDriver driver = new ChromeDriver(cap);

то вы можете использовать метод exists() для java.io.File, чтобы убедиться, что файл существует.

    File file = new file(downloadFilepath+filename);
    assert file.exists() : "File not downloaded";