Ich benutze Selen Webdriver, um einige Downloads mit Firefox zu tun. Im Moment wartet mein Skript nach dem Start des Downloads auf eine bestimmte Zeit und schließt dann das Firefox. Ich möchte wissen, ob es eine Möglichkeit gibt, Firefox so zu konfigurieren, dass Download-Completions automatisch geschlossen werden. Oder kann ich mit Selen-Webdriver prüfen, ob der Download abgeschlossen ist? Ich möchte kein Add-On verwenden, da es möglicherweise eine Abhängigkeit in meinem Skript hinzufügt. Ich kann wget/curl usw. nicht benutzen, um die Dateien herunterzuladen. Vielen Dank im Vorausschließen firefox automatisch, wenn der Download abgeschlossen ist
Antwort
Was Ignacio Contreras. Das Abrufen des Downloadpfads ist möglicherweise die beste (robusteste) Lösung.
Alternative # 1:
Verwenden Sie ein FirefoxProfile
mit Download Statusbar Addon. Es hat eine praktische Option, "Download im Download-Manager fortsetzen, nachdem das Fenster geschlossen wurde" (oder etwas sehr ähnliches), so dass es Firefox im Hintergrund laufen lässt, bis der Download abgeschlossen ist.
Alternative # 2:
Laden Sie die Datei direkt this (oder anderes ähnliches WebDriver freundlichen Tool) ... oder this, wenn Sie können. Das wird Firefox komplett aus dem Prozess entfernen.
Ich bin mir nicht sicher, ob das funktionieren würde, aber haben Sie in Betracht gezogen, durch Firefox den Download-Standort zu erkunden? polling es, bis Sie sehen, dass der Download abgeschlossen ist.
Wenn ich nicht falsch liege, wenn die Datei heruntergeladen wurde, sollte es eine zusätzliche Datei mit der Erweiterung .part geben.
So etwas wie dieses (Pseudo-Code):
...
WebDriver poller = new FirefoxDriver()
poller.get("path to download folder");
while ("file with .part extension is present") {
// Wait/sleep some time
// Refresh poller
}
// close downloading firefox instance
firefox.quit();
// close the polling instance
poller.quit();
Hoffe, dass es
sagte hilftDank Ignacio. Das Problem ist jedoch, dass zu einem bestimmten Zeitpunkt mehrere Instanzen von Firefox ausgeführt werden können. Die mehreren Firefox-Instanzen können auf denselben Speicherort heruntergeladen werden. –
Nun, Sie machen, dass jede dieser Instanzen den Download-Speicherort abfragt, um nach der .part-Datei ihrer jeweiligen Downloads zu suchen (wenn die Instanzen von getrennten Instanzen von laufendem Java-Code ausgelöst werden). Oder wenn alle von ihnen aus dem gleichen Programm ausgeführt werden, können Sie ein Array von Dateinamen erstellen, so dass Sie einen eindeutigen Abfragetreiber auslösen können, der jede Firefox-Instanz bei Bedarf schließt. –
Sie können Selen verwenden WebDriver API WebDriverWait Klasse, um die Abfrage mit dem folgenden Code zu tun:
(new WebDriverWait(driver, 180, 10)).until(new ExpectedCondition<Boolean>() {
public Boolean apply(WebDriver d) {
return !downloadedFilePart.exists();
}
});
Der obige Code prüft, ob Datei mit .part Erweiterung Programm ist für alle 10 Sekunden das Herunterladen, bis entweder Download abgeschlossen oder Zeitüberschreitung nach 3 Minuten.
- 1. Wie kann ich auto schließen in Firefox ausführen, wenn der Download abgeschlossen ist
- 2. jQuery überprüfen, wenn der PDF-Download abgeschlossen ist
- 3. Android Download Manager abgeschlossen
- 4. Browser Download abgeschlossen Ereignis
- 5. Versand nach Download ist in Swift abgeschlossen?
- 6. QNetworkAccessManager: Wie stelle ich sicher, dass der Download abgeschlossen ist?
- 7. Die Benachrichtigungsleiste verschwindet, nachdem der Download abgeschlossen ist.
- 8. Wenn SendAsync abgeschlossen ist?
- 9. winform automatisch schließen, wenn das Hauptformular geschlossen ist
- 10. Ajax erkennen, wenn von Senden abgeschlossen ist
- 11. HTML-Tags automatisch schließen
- 12. Fabric - Einstellungen können nicht abgeschlossen werden download
- 13. Backbone.Marionette: Ansicht schließen, bis vorSchließende Animation ist abgeschlossen
- 14. Datetime nicht automatisch schließen
- 15. Wissen Sie, welche Bibliothek Firefox 3 für die "Download abgeschlossen" -Info verwendet?
- 16. firefox download attribut funktioniert nicht
- 17. Download von Download Manager android fortsetzen, wenn der Download fehlgeschlagen ist
- 18. Unerwartete Reihenfolge der Ausführung - GUI aktualisiert nur, nachdem der Download abgeschlossen ist
- 19. Wie überprüfen, wenn Javascript abgeschlossen ist
- 20. Wie erkennt man, wenn innerHTML abgeschlossen ist
- 21. UICollectionView - Erhalten Sie einen Rückruf, wenn der Ladevorgang abgeschlossen ist?
- 22. Benachrichtigen Sie Benutzer, wenn der Vorgang abgeschlossen ist
- 23. Wie kann ich erkennen, wenn der XAML-Slider abgeschlossen ist?
- 24. Python - wget überprüfen, wenn der Prozess abgeschlossen ist
- 25. Anruffunktion, wenn der Superjob eines Sidekiq-Superworker abgeschlossen ist
- 26. Android-Exoplayer-Rückruf, wenn Suche abgeschlossen ist
- 27. Benachrichtigen, wenn Ausführung/Befehl abgeschlossen ist
- 28. Schließen Firefox Registerkarte von Javascript
- 29. Firefox erhalten, um einen exe-Download zwischenzuspeichern
- 30. C# Socket-Programm automatisch schließen
Genau wie ein Datenpunkt verweist der Link zur Download-Statusleiste auf ein älteres Plugin. Bei der Installation von Symantec (weil ich nicht zu sehr darauf geachtet habe), läuft Symantec aus, weil seine Seite mit Adware beladen ist. Aktualisierter Link: https://addons.mozilla.org/en-us/firefox/addon/download-status-bar/ –