2009-08-23 63 views
8

假設客戶端在RC服務器上啓動硒會話,但在會話中間客戶端「離開」了。瀏覽器將保持打開狀態,最終,經過足夠的這種丟失的會話後,將有足夠的「孤兒」瀏覽器來減慢計算機的速度。如何在丟失客戶端的硒RC服務器上關閉瀏覽器

  • 如何確保這些瀏覽器已關閉?
  • 爲什麼協議中沒有「keep-alive」部分來確保客戶端仍然響應並且不殺死會話?
  • +0

    一旦你認爲你的問題已被回答,你必須接受答案... – Santi 2009-08-25 20:24:44

    +0

    在類似的筆記中,我可以重複使用現有的瀏覽器會話嗎? :) – Nayn 2010-12-03 08:39:01

    +0

    @Nayn - 是的,你可以! :)有一個參數可以在啓動時發送selenium RC:-browserSessionReuse – olamundo 2010-12-03 11:19:03

    回答

    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並打開以下網址(使用瀏覽器,甚至是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

    +0

    很好的例子Santi – AutomatedTester 2009-08-24 07:42:32

    +0

    對於Firefox瀏覽器,你可以通過檢查profile文件夾名來找到sessionid。在unixlike系統上,'ps ax | grep firefox-bin'會返回類似'12345? 1:00/usr/lib/iceweasel/firefox-bin -profile/tmp/customProfileDir '。 – Tgr 2011-07-01 12:04:45

    2

    你也可以殺死進程:

    的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 
    
    +0

    這會殺死所有的firefox,而不僅僅是「殭屍」。所以如果,例如,你在同一臺機器上運行兩個rc(並非不太可能),那麼最終可能會導致另一個RC使用的ff。 – olamundo 2010-09-25 15:48:38

    2
    >>> browser.stop() 
    

    與Santi同樣如上解釋。

    相關問題