8 Stimmen

Wie schließt man einen Browser auf einem Selenium RC Server, der seinen Client verloren hat?

Nehmen wir an, ein Client startet eine Selenium-Sitzung auf einem RC-Server, aber in der Mitte der Sitzung ist der Client "weg". Der Browser bleibt geöffnet, und schließlich, nach genügend abgebrochenen Sitzungen, gibt es genug "verwaiste" Browser, um den Computer zu verlangsamen.

  • Wie kann ich sicherstellen, dass diese Browser geschlossen sind?
  • Warum gibt es im Protokoll keinen "keep-alive"-Teil, der sicherstellt, dass der Client noch ansprechbar ist, und wenn nicht, die Sitzung beendet?

14voto

Santi Punkte 4268

Jede Browserinstanz hat 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'

Wenn Sie also diese SessionId in einer Datei speichern, wenn Ihr Test beginnt, und sie dann entfernen, wenn Ihr Test endet, haben Sie eine Protokolldatei mit Sessions für Tests, die nicht ordnungsgemäß beendet wurden.

Mit cron oder einer anderen regulären Ausführung können Sie diese Datei lesen, die darin gespeicherten sessionIds durchlaufen und die folgende URL öffnen (mit einem Browser oder sogar einer http-Bibliothek für Ihre Programmiersprache):

http://localhost:4444/selenium-server/driver/?sessionId=THE-SESSION-ID&cmd=testComplete

Das sollte genügen.

Edit: Ich fand diese Frage so interessant, dass ich einen Beitrag in meinem Blog über die Lösung erstellt habe. Wenn Sie ein Python-Typ sind, werden Sie es interessant finden: http://www.santiycr.com.ar/djangosite/blog/posts/2009/aug/25/close-remaining-browsers-from-selenium-rc

2voto

BotBilly Punkte 21

Sie können den Prozess auch einfach beenden:

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

2voto

hruske Punkte 2135
>>> browser.stop()

Macht das Gleiche wie Santi oben erklärt.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X