假设客户端在 RC 服务器上启动 selenium 会话,但在会话中间客户端“离开”。浏览器将保持打开状态,最终,在足够多的此类丢弃会话之后,将有足够多的“孤立”浏览器来降低计算机的速度。
问问题
14122 次
3 回答
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 或任何常规执行,您可以读取该文件,遍历存储在其中的 sessionIds 并打开以下 url(使用浏览器甚至是您的编程语言的 http 库):
http://localhost:4444/selenium-server/driver/?sessionId=THE-SESSION-ID&cmd=testComplete
这应该够了吧。
编辑:我发现这个问题很有趣,因此在我的博客中创建了一篇关于解决方案的帖子。如果您是 python 人,您会发现它很有趣: http: //www.santiycr.com.ar/djangosite/blog/posts/2009/aug/25/close-remaining-browsers-from-selenium-rc
于 2009-08-23T23:24:28.567 回答
2
您也可以直接终止进程:
视窗:
taskkill /f /im iexplore.exe
taskkill /f /im firefox.exe
*尼克斯:
for i in `ps -A | grep firefox | awk '{print $1}'`; do kill -9 $i; done
于 2010-09-03T14:41:44.093 回答
2
>>> browser.stop()
与上面 Santi 解释的一样。
于 2010-10-23T10:25:00.207 回答