2009-08-23 5 views
8

クライアントがRCサーバー上でセレンセッションを開始すると仮定しますが、セッションの途中でクライアントが「去った」とします。ブラウザは開いたままになり、最終的にはセッションが十分に落とされた後、コンピュータを減速させるのに十分な「孤立した」ブラウザが存在します。クライアントを失ったセレンRCサーバーでブラウザを閉じるには

  • これらのブラウザが閉じていることを確認するにはどうすればよいですか?
  • クライアントに依然として応答性があり、セッションを終了しないようにするために、プロトコルに「キープアライブ」の部分がないのはなぜですか?
  • +0

    質問が回答されたと思ったら、回答を受け入れる必要があります... – Santi

    +0

    同様のメモで、既存のブラウザセッションを再利用できますか? :) – Nayn

    +0

    @Nayn - はいできます! :)起動時にセレンRCを送信できる引数があります:-browserSessionReuse – olamundo

    答えて

    14

    すべてのブラウザインスタンスには、保存できるsession_idがあります。 Pythonの例:

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

    あなたがたときに、あなたのテストを開始するファイルでこれらのセッションIDを格納し、あなたのテストが終了したときに、それを削除した場合、あなたは結局なかったテストのセッションのログ・ファイルを持っています正しく。

    今のcron、または任意の定期的な実行を使用して、あなたは(あなたのプログラミング言語のためのブラウザ、あるいはHTTPライブラリを使用して)、そのファイルを読み、それに保存されているsessionIdsを反復し、次のURLを開くことができます。

    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

    +0

    Firefoxブラウザでは、プロファイルフォルダ名を確認してsessionidを見つけることができます。 UNIX系のシステムでは、 'ps ax | grep firefox-bin'は '12345のようなものを返しますか? 1:00/usr/lib/iceweasel/firefox-bin -profile/tmp/customProfileDir 'と入力します。 – Tgr

    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を殺すでしょう。たとえば、同じマシン上で2つのrcを実行した場合(そうではない場合)、もう一方のRCで使用されていたffが終了する可能性があります。 – olamundo

    2
    >>> browser.stop() 
    

    上記のSantiと同じことは説明していますか?

    関連する問題