Vraag komkommer testbestand download


Iedereen heeft idee hoe het downloaden van bestanden met behulp van komkommer te testen?


16
2018-03-10 03:51


oorsprong


antwoorden:


Dit werkte voor mij op basis van send_data zoals zo send_data(data, :filename => "inventory_#{Date.today.to_s}.csv", :disposition => 'attachment')

Waarschijnlijk niet de beste manier om de stap te schrijven, maar het werkte!

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

13
2018-03-17 15:32



ik vond deze om een ​​handige manier te zijn om te testen op downloads, het is een naïeve manier om gewoon te testen of de headers voor het grootste deel van de tijd redelijk zijn.

Als je capbybara gebruikt, plaats dan het volgende in je step_definitions.rb

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

Binnen uw functie kunt u nu doen:

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

Proost


10
2018-06-30 11:12



Ik draai selenium door chroom, tijdens het testen van het csv-bestand gebruik ik het volgende in Ruby:

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

Het ziet er eenvoudig uit in de standaard downloaddirectory en bevestigt dat het bestand daar is en voert de bestandsnaam uit binnen cmd.


1
2017-07-20 14:26



Op chrome doe ik het door de pagina te openen: chrome://downloads en gebruik dan de shadow dom om de gedownloade bestanden op te halen:

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

De gedownloade bestandenlijst bevat ook informatie zoals bestandspad en downloaddatum.


1
2018-05-18 21:33



Voor Chrome kunt u de mogelijkheid instellen om chroomopties in te stellen. Raadpleeg onderstaande code

      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);

dan kunt u de methode bestaat () van java.io.File gebruiken om te controleren of het bestand bestaat.

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

0
2017-09-19 15:43