Firefox-Fenster nicht schließen, nachdem Selenium test laufen hat
Ich habe seit meinem selenium-tests mit selenium rc für über 6 Monate und plötzlich ist der firefox für windows Selen öffnet sich nicht schließen, wenn der test abgeschlossen ist.
Ich bin mit einem bestimmten firefox-Profil und hatte nicht aktualisiert, mein selenium rc jar. Ich dachte, dass vielleicht immer das neueste build von firefox vielleicht das problem, aber ich wieder zu firefox 2 und das Fenster noch offen bleiben.
Mir läuft der test auf einem Windows box.
Ich habe bemerkt, andere Leute scheinen mit diesem problem - nur Frage mich, wenn jemand eine Lösung hat?
Dank,
Gearoid.
Jus zu klären, laufen Sie den RC auf einem Windows-Rechner (also der browser läuft in Windows) oder laufen Sie den test auf einem Windows-Rechner (so dass Ihr client-code ist in Windows ausführen und eine Verbindung zu einem RC), oder beide?
Beide. Cheers -gearoid
Beide. Cheers -gearoid
InformationsquelleAutor Ger | 2010-08-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Meine Lösung war die Verwendung
driver.quit()
(dieser wird automatisch schließen Sie den Firefox-browser) stattdriver.close()
- auch wenn es nur ein Firefox-Fenster öffnen, AFAIK.InformationsquelleAutor jsalvata
Sehr einfache Lösung in der Ende - kurz genannt SeleniumTestCase die tearDown () - Methode (ie. wir nennen super.tearDown(); aus unserer Basis-test-Klasse)
Dass schließt alle browser-Fenster erfolgreich.
InformationsquelleAutor Ger
Hatten wir dieses problem und nach einigen Untersuchungen haben wir es festgelegt.
In Selenium RC, Sie haben die Datei "grid_configuration.yml" wo haben Sie die Liste der Browser und die jeweiligen Bezeichner, zum Beispiel "*firefox".
Abhängig von Ihrer Umgebung, wenn Sie ausführen "firefox" Sie werden wahrscheinlich den Aufruf einer wrapper, ein alias oder einen symbolischen link von der firefox-EXE-Datei.
Wenn Selen gestartet wird, erstellt es einige Gabel Prozess für den browser und je nachdem, ob Sie den Aufruf des firefox ausführbare Datei direkt oder in einer Hülle, die Schaffung dieser Prozess ist anders und wenn er versucht zu töten, den Prozess in der tearDown() es tatsächlich tötet, wird der Kind-Prozess und halten Sie den Vater lebt, so ist die tearDown() nicht den browser schließen.
Die Lösung ist das Bearbeiten der "grid_configuration.yml" Datei ändern "*firefox" für den absoluten Pfad der ausführbaren browser-Datei (immer mit * am Anfang)
InformationsquelleAutor victorgp
Verwenden wir Microsoft frei verfügbar sysinternals pskill Werkzeug, um zu töten browser (einschließlich firefox) Prozess.
Durch ausführen
pskill "firefox.exe"
dass töten ein FireFox-Fenster.Wenn Sie ausführen müssen, die auf einer remote-Maschine, die Sie verwenden können
[psexec][3]
. Auch für die beiden gibt es Befehl schaltet automatisch akzeptieren Sie die EULA (-accepteula), so dass Sie nicht haben, um.InformationsquelleAutor Zugwalt
Gearóid: ich sehe nicht, wie das würde das problem lösen. super.tearDown() wird automatisch aufgerufen, nach jedem Testfall keiner Weise, so dass eine zusätzliche anrufen würde, nur machen Sie es zweimal ausgeführt.
Habe ich bemerkt, dass der browser von windows nicht heruntergefahren, bis der Selenium-server ist gestoppt. Also, in meinem Fall, wenn es 100 selenium-tests, hätte ich 200 Firefox-Fenster öffnen, bevor Sie schließlich geschlossen, wenn sich der Selenium-server wird beendet.
(Ich bin mit Fedora 13 und Firefox 3.6.7)
InformationsquelleAutor Mr Auni
Verwendung von TestNG, können Sie vor dem
teardown()
- Funktion mit einem@AfterMethod
oder eine@AfterTest
Anmerkung, statt@AfterClass
.InformationsquelleAutor rs79
Wenn Sie mit python am Ende der ZERLEGUNG verwenden
super(unittest2.TestCase,self).tearDown()
InformationsquelleAutor Dan Doyon
Mit MSTest, die ich rief-Treiber.Quit() in der TestCleanup aber ich halte am Ende mit einer Last von Firefox Fenster offen, am Ende des tests.
Habe ich festgestellt, dass eine NoSuchElementException scheint zu verhindern, dass der Treiber erfolgreich aufrufen beenden, so verpackt der TestCleanup mit einem try/finally:
Dieser arbeitete mit dem problem, das ich gehalten haben, aber es kann sein, dass ich wickle alle meine TestMethods mit try/finally ist auch gut so. Dies ist weit von ideal, aber ich habe nicht mehr zu haben scheinen Fenster offen gelassen, als ich dies tun.
InformationsquelleAutor DevDave
Ich hatte das gleiche Problem. Ich bin mit Selen als Teil meiner Visual Studio unit-tests und hatte das gleiche Problem mit Firefox Browser nicht schließen am Ende des tests.
Zwei Dinge fest das für mich:
1) ich aktualisiert die /core-Ordner unter der Webseite mit einer up-to-date-version.
2) ich fand, dass Selen wurde, ruft mein Set-Up-Methode in einer Basisklasse zweimal. Counter - intuitiv (zumindest für mich) es scheint, Selen ruft die set-up-Methode, die in einer übergeordneten Klasse automatisch. Wenn Sie versuchen, rufen Sie es im set-up von einem untergeordneten Klasse (also mit so etwas wie base.setup() ) es wird zweimal ausgeführt wird, und öffnen Sie Firefox für windows kann es nicht schließen. Ich entfernte die Anrufe zu base.setup() und alle meine extra Fenster auf, wie Probleme gelöst wurden.
InformationsquelleAutor David Collett
Bloße Tage aus der Frage s 3. Geburtstag reiche ich noch anderen obskuren Lösung:
Mein Firefox wurde in einem benutzerdefinierten Speicherort. Denn ich wollte nicht, dass Babysitten eine benutzerdefinierte JVM-argument jedes mal, wenn ich lief meine Selenium tests lokal, ich habe eine passthrough-Skript in
/usr/local/bin
. Vermutlich Selen wurde die Tötung der Prozess gestartet wird (also mein Skript), nicht der browser.So, ich bin wieder auf die Verwendung der JVM-argument für benutzerdefinierte browser-Standorte:
-Dwebdriver.firefox.bin="/path/to/firefox"
InformationsquelleAutor inanutshellus