Selen warten Sie zum download?
Ich versuche zum testen der happy-Pfad für ein Stück code, das dauert eine lange Zeit, um zu reagieren, und dann beginnt das schreiben einer Datei an die Antwort-output-stream, in dem die Aufforderung ein download-dialog im Browser.
Das problem ist, dass dieser Prozess hat in der Vergangenheit gescheitert, eine Ausnahme zu werfen, nachdem diese lange an der Arbeit. Gibt es eine Möglichkeit, Selen zu wait-for-download
oder äquivalent?
Konnte ich werfen Sie in einem Thread.sleep
, aber das wäre ungenau und unnötig verlangsamen Sie den test ausführen.
Was soll ich tun, hier?
Du musst angemeldet sein, um einen Kommentar abzugeben.
So haben Sie zwei Probleme:
Weder problemc werden direkt gelöst Selen (noch - 2.0 kann helfen), aber beide sind lösbare Probleme. Das erste problem kann gelöst werden, indem die GUI automation toolkits, wie z.B. AutoIT. Sie können aber auch gelöst werden, indem er einfach eine automatisierte Tastendruck auf OS-Ebene simuliert, dass die enter-Taste (funktioniert für Firefox, ein wenig härter auf einigen Versionen von Chrome und Safari). Wenn Sie Java verwenden, können Sie mit Roboter zu tun. Andere Sprachen haben ähnliche toolkits um so etwas zu tun.
Das zweite Problem ist wahrscheinlich am besten gelöst werden, mit irgendeiner Art von proxy-Lösung. Zum Beispiel, wenn Ihr browser so konfiguriert wurde, gehen Sie über einen proxy und proxy hatte eine API, könnte man die Abfrage der proxy mit, dass die API zu Fragen, wenn Netzwerk-Aktivität beendet hatten.
Dass ist, was wir tun http://browsermob.com, das ist ein startup, das ich gegründet verwendet Selen zu tun, load testing. Wir veröffentlicht haben, einige der proxy-code, der als open-source, verfügbar auf http://browsermob.com/tools.
Aber zwei Probleme bestehen immer noch:
Hoffe, das hilft, Sie zu identifizieren, Ihre verschiedenen Optionen. Viel Glück!
Ich hatte das gleiche problem. Ich habe etwas erfunden, um das problem zu lösen. Ein locken-Datei erstellt, die von Python mit '.Teil' Erweiterung. Also, wenn noch haben wir die temp, python können warten Sie 10 Sekunden und überprüfen Sie erneut, wenn die Datei heruntergeladen ist oder noch nicht.
Dies ist Chrom-Test-Lösung für die Steuerung des downloads mit javascript..
Verwendung von WebDriver (Selenium2) es kann getan werden, innerhalb von Chrome chrome:// das ist HTML/CSS/Javascript:
Gibt es andere Download.der Prototyp.Funktionen in "chrome://downloads/downloads.js"
Diese Suiten Sie, wenn Sie brauchen nur zu test einige Informationen beachten zB. verursacht durch Datei-Anhang erste Aktivität, und nicht die Datei selbst.
Natürlich müssen Sie Schritt 1. - erwähnt von Patrick oben - und damit Sie die Kontrolle Schritt 2. FÜR DEN TEST, nicht für die Funktionsfähigkeit der eigentlichen Datei-download-Abschluss /Abbruch.
Siehe auch : Javascript: Abbrechen/Stoppen Bild Anfragen, die im Zusammenhang mit Browser beenden.
Dies fällt unter die "Dinge, die nicht automatisiert werden können" - Kategorie. Selen ist gebaut mit JavaScipt und wegen der JavaScript-sandbox-Einschränkungen keinen Zugriff auf die downloads.
Selen 2 in der Lage sein könnte, dies zu tun, sobald Warnungen/Aufforderungen umgesetzt wurden, aber dass dies nicht geschehen wird für die nächste kleine Weile noch.
Wenn Sie möchten, suchen Sie nach der download-dialog, versuchen Sie es mit AutoIt. Ich benutze, dass für das hochladen und herunterladen der Dateien. Mit AutoIt mit Se-RC ist einfacher.
*Ruby-Syntax