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

发布于 2024-08-02 04:55:06 字数 184 浏览 5 评论 0原文

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

  • 我如何确保这些浏览器已关闭?
  • 为什么协议中没有“保持活动”部分来确保客户端仍然响应,如果不终止会话?
  • suppose a client starts a selenium session on an RC server, but at the middle of the session the client "went away". The browser will remain open, and eventually, after enough such dropped sessions, there will be enough "orphan" browsers to slow down the computer.

  • How can I make sure those browsers are closed?
  • Why isn't there a "keep-alive" part in the protocol to make sure the client is still responsive and if not kill the session?
  • 如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

    扫码二维码加入Web技术交流群

    发布评论

    需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

    评论(3

    你另情深 2024-08-09 04:55:06

    任何浏览器实例都有一个可以存储的 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

    这应该可以解决问题。

    编辑:我发现这个问题非常有趣,因此在我的博客中创建了一篇关于该解决方案的帖子。如果你是一个 Python 爱好者,你会发现它很有趣:
    http:// /www.santiycr.com.ar/djangosite/blog/posts/2009/aug/25/close-remaining-browsers-from-selenium-rc

    Any browser instance has a session_id you can store. Python example:

    >>> import selenium
    >>> browser = selenium.selenium("localhost",4444, "*firefox", "http://www.santiycr.com.ar")
    >>> browser.start()
    >>> browser.sessionId
    u'b4ad1f1d624e44d9af4200b26d7375cc'
    

    So, if you store these sessionId in a file when your test starts and then remove it when your tests ends, you'll have a log file with sessions for tests that didn't end up properly.

    Now using cron, or any regular execution, you can read that file, iterate over the sessionIds stored in it and open the following url (using a browser or even an http library for your programing language):

    http://localhost:4444/selenium-server/driver/?sessionId=THE-SESSION-ID&cmd=testComplete

    That should do the trick.

    Edit: I found this question so interesting that created a post in my blog about the solution. If you're a python guy you'll find it interesting:
    http://www.santiycr.com.ar/djangosite/blog/posts/2009/aug/25/close-remaining-browsers-from-selenium-rc

    忆伤 2024-08-09 04:55:06
    >>> browser.stop()
    

    与 Santi 上面解释的相同。

    >>> browser.stop()
    

    Does the same as Santi explains above.

    攀登最高峰 2024-08-09 04:55:06

    您也可以直接终止进程:

    Windows:

    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
    

    You can also just kill the process:

    Windows:

    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
    
    ~没有更多了~
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文