如何关闭丢失了它的客户端的selenium RC服务器上的浏览器

时间:2009-08-23 05:25:32

标签: session browser selenium selenium-rc

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

  • 如何确保关闭这些浏览器?
  • 为什么协议中没有“保持活动”部分以确保客户端仍然响应,如果没有终止会话?
  • 3 个答案:

    答案 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()
    

    与上述解释相同。