8

クライアントがRCサーバーでセレンセッションを開始したが、セッションの途中でクライアントが「離れた」とします。ブラウザは開いたままになり、最終的には、そのようなセッションが十分にドロップされた後、コンピュータの速度を低下させるのに十分な「孤立した」ブラウザが存在します。

  • これらのブラウザが閉じていることを確認するにはどうすればよいですか?
  • クライアントがまだ応答していることを確認し、そうでない場合はセッションを強制終了するための「キープアライブ」部分がプロトコルにないのはなぜですか?
  • 4

    3 に答える 3

    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 を反復処理して、次の 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

    于 2009-08-23T23:24:28.567 に答える
    2
    >>> browser.stop()
    

    Santi が上で説明したのと同じことを行います。

    于 2010-10-23T10:25:00.207 に答える
    2

    プロセスを強制終了することもできます。

    ウィンドウズ:

    taskkill /f /im iexplore.exe
    taskkill /f /im firefox.exe

    *ニックス:

    for i in `ps -A | grep firefox | awk '{print $1}'`; do kill -9 $i; done
    
    于 2010-09-03T14:41:44.093 に答える