Angenommen, ein Client startet eine Selen-Sitzung auf einem RC-Server, aber in der Mitte der Sitzung "ging der Client". Der Browser bleibt geöffnet, und nach so vielen abgelegten Sitzungen wird es genug "verwaiste" Browser geben, um den Computer zu verlangsamen.So schließen Sie einen Browser auf einem Selen RC-Server, der seinen Client verloren hat
Antwort
Jede Browser-Instanz verfügt über eine session_id, die Sie speichern können. Python Beispiel:
>>> import selenium
>>> browser = selenium.selenium("localhost",4444, "*firefox", "http://www.santiycr.com.ar")
>>> browser.start()
>>> browser.sessionId
u'b4ad1f1d624e44d9af4200b26d7375cc'
Also, wenn Sie speichern diese sessionId in einer Datei, wenn der Test beginnt und dann entfernen, wenn die Tests Ende, werden Sie eine Protokolldatei mit Sitzungen für Tests haben, die nicht am Ende richtig.
Jetzt cron verwenden, oder jede regelmäßige Ausführung, können Sie diese Datei lesen, die sessionIds darin gespeicherten iterieren und öffnen Sie die folgende URL (einen Browser oder sogar eine http-Bibliothek für Ihre Programmiersprache verwenden):
http://localhost:4444/selenium-server/driver/?sessionId=THE-SESSION-ID&cmd=testComplete
Das sollte den Trick tun.
Edit: Ich fand diese Frage so interessant, dass ein Beitrag in meinem Blog über die Lösung erstellt. Wenn Sie ein Python-Typ sind Sie finden es interessant: http://www.santiycr.com.ar/djangosite/blog/posts/2009/aug/25/close-remaining-browsers-from-selenium-rc
Gutes Beispiel Santi – AutomatedTester
Für Firefox-Browser können Sie die Sitzungs-ID herausfinden, indem Sie den Profil-Ordnernamen überprüfen. Auf einem unixartigen System, ps ax | grep firefox-bin wird etwas wie 12345 zurückgeben? 1:00/usr/lib/iceweasel/firefox-bin -profile/tmp/customProfileDir
Sie können auch nur den Prozess töten:
Fenster:
taskkill /f /im iexplore.exe
taskkill /f /im firefox.exe
* nix:
for i in `ps -A | grep firefox | awk '{print $1}'`; do kill -9 $i; done
das wird alle firefoxes töten, nicht nur die "Zombie". Wenn Sie zum Beispiel zwei RCs auf dem gleichen Rechner laufen lassen (nicht so unwahrscheinlich), könnten Sie am Ende einen FF klopfen, der vom anderen RC verwendet wurde. – olamundo
>>> browser.stop()
Hat dasselbe wie Santi oben erklärt.
- 1. Löschen Sie einen Ordner, der seinen Besitzer verloren hat
- 2. So greifen Sie über einen Browser auf Geräte auf einem Client-PC zu
- 3. So starten Sie Selen Browser mit Proxy
- 4. Schließen Sie den Browser vollständig mit Selen C# webdriver
- 5. Detect Browser Schließen auf Asp.net
- 6. Entfernen Sie unerwünschte Inhalte auf Client-Seite Browser
- 7. Bestätigen Sie die Meldung auf der Browser-Seite schließen
- 8. So verstecken oder schließen Sie einen PopupWindow
- 9. So ändern Sie die Browser-Instanz in Selen mit Java
- 10. So schließen Sie sicher einen Thread, der eine Endlosschleife enthält
- 11. So speichern Sie den Seitenstatus beim Schließen
- 12. Schließen Browser-Speicher-Popup-Popup durch Selen-Web-Treiber
- 13. Sitzung verloren beim Schließen des Browsers
- 14. So entwerfen Sie einen Client-Server-Architekt
- 15. Python Selen Browser driver.back()
- 16. Browser schließen Ereignis und Logout
- 17. Wie auf einem Client einem neuen Browser-Fenster zu öffnen, anstatt einen Server
- 18. Warten auf einem Browser-Aktion abzuschließen und in einem anderen Browser in Selen WebDriver
- 19. HBase Datensatz verloren beim Schließen
- 20. Hat SslStream.Dispose seinen inneren Strom entsorgen
- 21. So schließen Sie die Anzeige der Datei
- 22. So finden Sie alle auf einem Computer installierten Browser
- 23. So erstellen Sie einen HTML-Browser mit iframe
- 24. So erstellen Sie eine Vorschau in einem Browser (Browser in einem Browser mit vordefinierten Inhalten)
- 25. Programm schließen, wenn Browser
- 26. Selen Browser-Erkennung
- 27. Wie schließen Sie einen AsynchronousSocketChannel sauber?
- 28. Wie browser schließen Ereignis in Servlets
- 29. So erstellen/drucken Sie Berichte auf der Client-Seite
- 30. Sitzung auf Browser oder Tab schließen
Sie müssen eine Antwort akzeptieren, sobald Sie glauben, dass Ihre Frage beantwortet wurde ... – Santi
Könnte ich die vorhandenen Browsersitzungen auf ähnliche Weise wiederverwenden? :) – Nayn
@Nayn - ja du kannst! :) Es gibt ein Argument, das Sie dem Selenium RC senden können, wenn es startet: -browserSessionReuse – olamundo