8

假设客户端在 RC 服务器上启动 selenium 会话,但在会话中间客户端“离开”。浏览器将保持打开状态,最终,在足够多的此类丢弃会话之后,将有足够多的“孤立”浏览器来降低计算机的速度。

  • 如何确保这些浏览器已关闭?
  • 为什么协议中没有“保持活动”部分来确保客户端仍然响应并且如果没有终止会话?
  • 4

    3 回答 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 回答