Session 如何关闭丢失的selenium RC服务器上的浏览器';客户

Session 如何关闭丢失的selenium RC服务器上的浏览器';客户,session,browser,selenium,selenium-rc,Session,Browser,Selenium,Selenium Rc,假设客户机在RC服务器上启动selenium会话,但在会话进行到一半时,客户机“离开”。浏览器将保持打开状态,最终,在足够多的此类丢弃会话之后,将有足够多的“孤立”浏览器来降低计算机的速度 如何确保这些浏览器已关闭 为什么协议中没有“保持活动”部分来确保客户端仍然有响应,如果没有,则终止会话?任何浏览器实例都可以存储会话id。Python示例: >>> import selenium >>> browser = selenium.selenium("local

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

  • 如何确保这些浏览器已关闭
  • 为什么协议中没有“保持活动”部分来确保客户端仍然有响应,如果没有,则终止会话?
  • 任何浏览器实例都可以存储会话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库):

    这应该能奏效

    编辑:我发现这个问题非常有趣,所以在我的博客上写了一篇关于解决方案的帖子。如果你是python爱好者,你会发现它很有趣:

    您也可以终止进程:

    窗口:

    taskkill/f/im iexplore.exe

    taskkill/f/im firefox.exe

    *尼克斯:


    与Santi上面解释的相同。

    一旦您认为您的问题已得到回答,您必须接受答案……同样,我可以重复使用现有的浏览器会话吗?:)@不,是的,你可以有一个参数可以在selenium RC启动时发送:-browserSessionReusethis将杀死所有Firefox,而不仅仅是“僵尸”Firefox。因此,例如,如果您在同一台机器上运行两个rc(可能性不大),那么您可能最终会删除另一个rc使用的ff。对于Firefox浏览器,您可以通过检查配置文件文件夹名称来查找sessionid。在unixlike系统上,
    ps ax | grep firefox bin
    将返回类似于
    12345?1:00/usr/lib/iceweasel/firefox-bin-profile/tmp/customProfileDir
    for i in `ps -A | grep firefox | awk '{print $1}'`; do kill -9 $i; done
    
    >>> browser.stop()