4

私は、ノードをWindowsサービスとして実行する3つの異なるサーバーを持つSelenium Gridをセットアップしました。メモリリークや性能低下を避けるため、これらのマシンを定期的に再起動する必要があります。これを行うには、サーバー上のノードをシャットダウンし、残りのサーバーにテストをプッシュしながら再起動するジョブをスケジュールする必要があります。次に、他のサーバー上のスケジュールされたジョブと同じプロセスを繰り返します。テストを中断することなくSeleniumノードのシャットダウンをスケジュールする方法はありますか?

現在のテストが終了したら、セレニウムノードをシャットダウンする方法はありますか?または、特定のノードの状態を取得して、スケジューリングされたジョブでそれぞれ自分自身をチェックして、ノードをシャットダウンする前にノードがテストを実行していないことを確認できますか?あなたが/sessionsコマンドを使用して各ノードを要求することにより、アクティブなセッションの数を確認することができ

答えて

2

http://127.0.0.1:4444/wd/hub/sessions 

は応答:

{"state":"success","sessionId":null,"hCode":3217742,"value":[],"class":"org.openqa.selenium.remote.Response","status":0} 
+0

ありがとう。以前はこれを見ていましたが、ハブのクエリであると思っていました。使用する際にいくつかのエラーが発生しました。ここで確認した後で、http:// /wd/hub/sessionsとして使用されています。 – Sh3mm

+0

質問に続きます:私はあなたが言及したコマンドを使用してアクティブなセッションを持っているノードを見ることができます。しかし、私がノードをシャットダウンしようとすると、http:// node_ip_address:port/selenium-server/driver /?cmd = shutDownSeleniumServerとなります。シャットダウンからハブによる使用中に削除されるまでの待機時間は、新しいテストがそのノードに割り当てられないように十分速くありません。そのプロセスをスピードアップする方法、または実際にノードを削除するのではなく、実際にノードを登録解除する方法を知っていて、ハブでタイムアウトしてグリッドから削除されるのを待っていますか? – Sh3mm

+1

メインハブにコマンドを送信してノードの登録を解除することはできないようです。 –

1

Sh3mm

@いつか戻って私がブログを書きましたあなたが本質的に何をしているのかという「自己修復グリッド」を構築する方法について基本的に語っている投稿です。

hereから私のブログ記事を読むことができます。

SeLion Gridを構築する際には、基本的に同じアプローチを使用しました。 SeLionグリッドは、もう少し洗練されています。それについての詳細を読むhere

グリッドエクストラの一部としてGroupOnによって構築されたものと本質的に同じ種類の機能の別の味があります。あなたはそれを見てみることができますhere

+0

ありがとうクリスナン、私は確かにそのブログのポストに出くわしましたが、それは私が後にしたものであったかどうかはわかりませんでした。私はWindowsサービスとして動作するためにnssmを使って自分のハブとノードをインストールしました。そして、私が望むのは、ノードだけでなくサーバを再起動するために使用されていないことを知ることです。グリッドエクストラがWindowsサービスとして設定可能かどうか、またはすべてを調べてサーブレットを構築する必要があるかどうかはわかりませんでした。私は単にスケジュールされたジョブを実行して、ノードが使用中であるかどうかをチェックし、シャットダウンしない場合は、すべてのノードがシャットダウンしてサーバーを再起動するようにしたいと考えていました。他のマシンでこれを繰り返します。 – Sh3mm

+0

解決策では、ノードが登録されていないときにハブはすぐには認識せず、タイムアウトするまでテストを割り当てようとします。 – Sh3mm

+1

@ Sh3mmその解決策では、Gridは、「kill」命令を送信するときに、レジストリからノードを削除します。あなたが呼び出すシナリオは決して起こりません。 –

関連する問題