supponiamo che un client avvii una sessione di selenio su un server RC, ma a metà sessione il client "è andato via". Il browser rimarrà aperto e alla fine, dopo un numero sufficiente di sessioni di questo tipo, ci saranno abbastanza "orfani" browser per rallentare il computer.Come chiudere un browser su un server RC di selenio che ha perso il client
risposta
Ogni istanza del browser ha un session_id che è possibile memorizzare. Esempio Python:
>>> import selenium
>>> browser = selenium.selenium("localhost",4444, "*firefox", "http://www.santiycr.com.ar")
>>> browser.start()
>>> browser.sessionId
u'b4ad1f1d624e44d9af4200b26d7375cc'
Quindi, se si memorizzano questi sessionId in un file quando il test si avvia e poi rimuoverlo quando i test finisce, avrete un file di log con le sessioni per le prove che non finiscono propriamente.
Ora utilizzando cron, o qualsiasi regolare esecuzione, si può leggere il file, scorrere i SessionIDs memorizzati in esso e aprire la seguente url (utilizzando un browser o anche una libreria HTTP per il vostro linguaggio di programmazione):
http://localhost:4444/selenium-server/driver/?sessionId=THE-SESSION-ID&cmd=testComplete
Questo dovrebbe fare il trucco.
Modifica: ho trovato questa domanda così interessante che ha creato un post nel mio blog sulla soluzione. Se sei un ragazzo pitone lo troverete interessante: http://www.santiycr.com.ar/djangosite/blog/posts/2009/aug/25/close-remaining-browsers-from-selenium-rc
Buon esempio Santi – AutomatedTester
Per i browser Firefox, è possibile trovare il sessionid controllando il nome della cartella del profilo. Su un sistema unixlike, 'ps ax | grep firefox-bin' restituirà qualcosa come '12345? 1:00/usr/lib/iceweasel/firefox-bin -profile/tmp/customProfileDir
È anche possibile uccidere il processo:
di 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
questo ucciderà tutti i firefox, non solo quelli "zombie". quindi se, ad esempio, esegui due rc sulla stessa macchina (non così improbabile), potresti finire con un ff che è stato usato dall'altro RC. – olamundo
>>> browser.stop()
Fa lo stesso di Santi sopra.
- 1. Cattura di browser con selenio RC
- 2. Come posso rilevare che un TadoConnection ha perso la comunicazione con il server?
- 3. Esiste un client websocket senza browser per Node.js che non ha bisogno di utilizzare un browser?
- 4. Perché il selenio RC è così lento?
- 5. Come chiudere il server Web ASP.NET Kestrel su un Mac
- 6. Socket IO rileva quando il client ha perso la connessione
- 7. Come chiudere correttamente un server TCP Node.js?
- 8. Come far funzionare il client Oracle su Windows 7 RC
- 9. Test selenio senza browser
- 10. come chiudere l'hub/griglia di selenio dal prompt dei comandi
- 11. Quando chiudere il client WCF?
- 12. Come chiudere un frame gui emacsclient senza uccidere il server
- 13. Configurazione repository Git per un progetto che ha un server e un client
- 14. Come scrivere un server contorto che è anche un client?
- 15. Proxy per selenio driver rc in java
- 16. Selenio: C'è qualche JS (JavaScript) strumento di copertura di codice che siamo in grado di integrarsi con Selenio Server/RC
- 17. Elimina una cartella che ha perso il proprietario
- 18. È possibile nascondere il browser in Selenium RC?
- 19. wpf listview ha perso il fuoco
- 20. equivalente di isTextPresent di selenio 1 (Selenio RC) in Selenio 2 (WebDriver)
- 21. Verificare se un client certificat è installato nel browser client
- 22. Chiudere completamente il browser con il selettore web C# per selenio
- 23. Per utilizzare il driver Web Selenium o il selenio RC
- 24. Come posso scrivere un server multi-client che non ha lo stato mutabile?
- 25. Il selenio ha problemi inaspettatamente
- 26. Perché questo server che ho scritto non rileva che il client ha chiuso il socket?
- 27. Il browser di accesso accede al selenio?
- 28. Come chiudere un ChromeDriver mentre è in esecuzione su Grid?
- 29. HttpWebRequest che restituisce "Il server remoto ha restituito un errore: NotFound" su Windows Phone 7
- 30. jQuery capendo se il genitore ha perso 'focus'
È necessario accettare una risposta una volta che si è risposto alla domanda ... – Santi
Sulla nota simile, è possibile riutilizzare le sessioni del browser esistenti? :) – Nayn
@Nayn - sì, puoi! :) C'è un argomento in cui è possibile inviare il selenio RC all'avvio: -browserSessionReuse – olamundo