załóżmy, że klient rozpoczyna sesję selenu na serwerze RC, ale w połowie sesji klient "odszedł". Przeglądarka pozostanie otwarta, a docelowo, po wystarczającej liczbie takich upuszczonych sesji, będzie wystarczająco dużo "osieroconych" przeglądarek, aby spowolnić działanie komputera.Jak zamknąć przeglądarkę na selenowym serwerze RC, który stracił swojego klienta?
Odpowiedz
Każda instancja przeglądarki ma identyfikator sesji, który można zapisać. Przykładem Python:
>>> import selenium
>>> browser = selenium.selenium("localhost",4444, "*firefox", "http://www.santiycr.com.ar")
>>> browser.start()
>>> browser.sessionId
u'b4ad1f1d624e44d9af4200b26d7375cc'
Tak więc, jeśli przechowywać te sessionid w pliku podczas uruchamiania testu, a następnie usunąć go, gdy testy końce, będziesz miał plik dziennika z sesji dla testów, które nie kończą się prawidłowo.
Teraz za pomocą crona, lub dowolny regularny wykonanie, można odczytać ten plik, iteracyjne nad sessionIds przechowywanych w nim i otwórz następujący adres URL (za pomocą przeglądarki lub nawet biblioteki http za język programowania):
http://localhost:4444/selenium-server/driver/?sessionId=THE-SESSION-ID&cmd=testComplete
To powinno załatwić sprawę.
Edytuj: To pytanie było tak interesujące, że utworzyłem post w moim blogu na temat rozwiązania. Jeśli jesteś pyton facet znajdziesz to ciekawe: http://www.santiycr.com.ar/djangosite/blog/posts/2009/aug/25/close-remaining-browsers-from-selenium-rc
Dobry przykład Santi – AutomatedTester
W przeglądarkach Firefox możesz dowiedzieć się sessionid, sprawdzając nazwę folderu profilu. W systemie uniksowym, 'ps ax | grep firefox-bin' zwróci coś takiego jak '12345? 1:00/usr/lib/iceweasel/firefox-bin -profile/tmp/customProfileDir
Można też po prostu zabić proces:
Windows:
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
to zabije wszystkie firefoxy, nie tylko te "zombie". więc jeśli na przykład uruchomisz dwa rc na tej samej maszynie (nie jest to mało prawdopodobne), możesz skończyć klupem, którego użył drugi RC. – olamundo
>>> browser.stop()
Czy to samo, co Santi, tłumaczy powyżej.
- 1. Jak zamknąć przeglądarkę z Capybara?
- 2. Jak poprawnie uwierzytelnić klienta AngularJS na serwerze
- 3. Jak prawidłowo zamknąć aplikację JAX-WS Spring na serwerze Tomcat?
- 4. Silverlight: jak zmusić przeglądarkę do pobrania zaktualizowanej wersji klienta?
- 5. użyj autoryzacji klienta Facebook i iOS na serwerze
- 6. Jak mogę całkowicie zamknąć demona Pyro na żądanie klienta?
- 7. Jak zamknąć przeglądarkę po utworzeniu klasy C# WebClient?
- 8. Aplikacja Render Backbone.js na serwerze I klienta
- 9. Jak odczytać dane HttpRequest wysłane z klienta, na serwerze
- 10. Różnica między "selenowym serwerem" i "selenowym serwerem samodzielnym" słoiki
- 11. UIVideoEditorController stracił rozdzielczość wideo
- 12. Git stracił commits
- 13. Jak zamknąć klawiaturę na UIWebView?
- 14. Jak napisać niestandardową walidację jQuery po stronie klienta w ASP.NET MVC 2 RC?
- 15. przy użyciu klienta git na bezgłowym serwerze linux
- 16. Domyślna wartość limitu czasu na selenowym webdriverze
- 17. Nowy wątek na połączenie klienta w serwerze gniazda?
- 18. Czy URL Doctype HTML jest pobierany przez przeglądarkę klienta?
- 19. Uruchamianie skryptu na serwerze AWS
- 20. Jaki jest bezpieczny czas, który mogę poczekać, zanim odpowiem na przeglądarkę, bez otrzymania limitu czasu?
- 21. Jak zamknąć zamrożoną sesję SSH?
- 22. Jak wyłączyć Flash w zdalnym administratorze selenowym
- 23. Prawdopodobnie stracił kilka zmian za pośrednictwem git
- 24. Uzyskiwanie klienta Oracle do pracy w systemie Windows 7 RC
- 25. Jak wykryć przeglądarkę przeszła na pełny ekran
- 26. Jak zaimplementować polecenie wyłączenia na serwerze WAI?
- 27. Jak emitować zdarzenie SocketIO na serwerze
- 28. Jak zamknąć terminal Geany
- 29. Jak programowo odświeżyć przeglądarkę?
- 30. CardView stracił margines podczas pompowania
Musisz zaakceptować odpowiedź, gdy myślisz, że Twoje pytanie zostało odebrane ... – Santi
Czy na podobnej zasadzie mogę ponownie wykorzystać istniejące sesje przeglądarki? :) – Nayn
@Nayn - tak, możesz! :) Istnieje argument, że możesz wysłać selen RC po uruchomieniu: -browserSessionReuse – olamundo