2016-05-07 2 views
1

Ich versuche, einige .xls-Datei mit Selen WebDriver mit ChromeDriver und PhantomJSD (für den Hintergrundmodus) zu downloaden. Es funktioniert einfach perfekt mit ChromeDriver, aber PhantomJS lädt die Datei nicht herunter.Manuelles Herunterladen der Datei - PhantomJS mit Selenium

Also, was ist mein Code simplly haben einige Website ist einloggen und klicken Sie auf diese Schaltfläche:

<button id="btnExcelExport" aria-label="יצוא נתונים" class="" data-tooltip="יצוא לאקסל"> </button>

Wenn die Schaltfläche geklickt haben, ein Rahmen mit Link erstellt:

<iframe src="/Online/ExportExcel.ashx?ExportParameter=ExportToExcel&amp;Action=75273143-ee19-47ad-91ac-1377fe3c8875&amp;Alias=428" style="display: none;"></iframe> 

Seit Ich habe herausgefunden, dass PhantomJS das Herunterladen nicht unterstützt. Ich habe versucht, die Datei manuell herunterzuladen, indem ich diesen Code link mit einigen kleinen Änderungen benutze, um sie mit meinem Code abzugleichen.

Als Ergebnis wird der HTML-Dateicode der Anmeldeseite heruntergeladen.

Wie kann ich diese Datei herunterladen?

(oder sollte ich geben PhantomJS, aber ich konnte eine einfache repalcement nicht gefunden ..)

Dank!

+0

bitte helfen ?? !! – BTob

Antwort

2

Ich bin in der Vergangenheit auf diesen Artikel gestoßen (http://collectiveidea.com/blog/archives/2012/01/27/testing-file-downloads-with-capybara-and-chromedriver/). Im Wesentlichen wird beschrieben, wie die Profileinstellung des Chrome-Treibers für Downloads eingerichtet wird. Schließlich führt der Treiber einfach Ihre native Chrom-Binärdatei aus. Ich hoffe, das hilft dir beim Detektivieren.

Zusammenfassend, so etwas wie dies sollte Ihr Fahrer sagen, wo zum Download:

require "selenium/webdriver" 

Capybara.register_driver :chrome do |app| 
    profile = Selenium::WebDriver::Chrome::Profile.new 
    profile["download.default_directory"] = "YOUR_DOWNLOAD_PATH" 
    Capybara::Selenium::Driver.new(app, :browser => :chrome, :profile => profile) 
end 

Capybara.default_driver = Capybara.javascript_driver = :chrome 

Alles was Sie jetzt verlassen haben, zu behandeln ist der Download-Prozess im Allgemeinen, die den obigen Link beschrieben. Der im Artikel beschriebene Prozess ist in Ruby geschrieben, sollte aber leicht in jede andere Sprache übersetzt werden.

+0

Danke für Ihre Antwort! aber scheint das nicht was ich brauche. Der Chrometreiber lädt die Datei herunter. Mein Problem mit dem Chrome-Treiber ist, dass ich die Arbeit im Hintergrund machen möchte. PhantomJS-Treiber funktioniert gut im Hintergrund, lädt die Datei jedoch nicht herunter. – BTob

+0

Ahh, es tut mir leid! Ich habe diese offene [Pull-Anfrage (10052)] (https://github.com/ariya/phantomjs/issues/10052) aus dem Repository von Phantomjs bezüglich Datei-Downloads gefunden. Sieht so aus, als wäre es ein work in progress. Entschuldigung, ich könnte nicht mehr Hilfe sein. Ich habe Leute gesehen, die den kopflosen [Poltergeist Driver] (https://github.com/teampoltergeist/poltergeist) verwenden, um eine Datei im Hintergrund herunterzuladen (http://stackoverflow.com/questions/15739423)/downloading-file-to-specific-folder-using-capybara-und-poltergeist-driver), aber das ist möglicherweise keine Lösung für Sie. –