假设客户端在RC服务器上启动selenium会话,但在会话中间客户端“离开”。浏览器将保持打开状态,并且最终在经过足够的此类丢弃会话后,将有足够的“孤儿”浏览器来减慢计算机速度。
答案 0 :(得分:14)
任何浏览器实例都有一个可以存储的session_id。 Python示例:
>>> import selenium
>>> browser = selenium.selenium("localhost",4444, "*firefox", "http://www.santiycr.com.ar")
>>> browser.start()
>>> browser.sessionId
u'b4ad1f1d624e44d9af4200b26d7375cc'
因此,如果您在测试开始时将这些sessionId存储在一个文件中,然后在测试结束时将其删除,那么您将拥有一个日志文件,其中的测试会话未正确结束。
现在使用cron或任何常规执行,您可以读取该文件,遍历存储在其中的sessionId并打开以下URL(使用浏览器甚至是用于编程语言的http库):
http://localhost:4444/selenium-server/driver/?sessionId=THE-SESSION-ID&cmd=testComplete
这应该可以解决问题。
编辑:我发现这个问题非常有趣,在我的博客中创建了一个关于解决方案的帖子。如果你是一个蟒蛇人,你会发现它很有趣: http://www.santiycr.com.ar/djangosite/blog/posts/2009/aug/25/close-remaining-browsers-from-selenium-rc
答案 1 :(得分:2)
你也可以杀死这个过程:
视窗:
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
答案 2 :(得分:2)
>>> browser.stop()
与上述解释相同。