2017-05-15 3 views
0

カスタムプロキシを実装してノードを登録するセレンハブを停止しようとしています。私はカスタムプロキシのために働くいくつかのコードを持っています。ただし、クライアントは、構成内にカスタムプロキシを指定しないことで、この問題を回避できます。ノードがカスタムプロキシを使用し、DefaultRemoteProxyを使用しないようにする方法がありますか?セレニウムノード/ハブ認証

または、セレンプロジェクトで、セレンハブを使ってノードを認証するための実装ができますか?

答えて

1

これを行うためのエレガントな方法はありません。 これは、あなたがこれを行うことができる汚れたハックです。

  • 新しいマーカーインターフェイスを作成しますが
  • は、その内容がorg.openqa.grid.selenium.proxy.DefaultRemoteProxyの内容を複製(私はオーバーライドCLASSPATHとして、このアプローチを呼びたいが、はるかにエレガントあります確信して新しいクラスを作成します(Registrableとしてそれを呼び出すことができます)この新しいクラスもDefaultRemoteProxyと呼ばれ、同じパッケージorg.openqa.grid.selenium.proxyにありますが、テストプロジェクト内にあります)。
  • コンストラクタ内で、次に示すように編集チェックを追加します。
  • このプロジェクトからuber jarを作成し、それを使ってハブをスピンオフすることができます。ここで

は次のようになりますどのようにRegistrableです

public interface Registrable {}

ここ

ようDefaultRemoteProxyの変更コンストラクタがどのように見えるかです:あなたはそれを実装するようにカスタムプロキシを微調整することができます今すぐ

public DefaultRemoteProxy(RegistrationRequest request, Registry registry) { 
super(request, registry); 
if (!(this instanceof Registrable)) { 
    throw new UnsupportedOperationException("Cannot proceed further"); 
} 
pollingInterval = config.nodePolling != null ? config.nodePolling : DEFAULT_POLLING_INTERVAL; 
unregisterDelay = config.unregisterIfStillDownAfter != null ? config.unregisterIfStillDownAfter : DEFAULT_UNREGISTER_DELAY; 
downPollingLimit = config.downPollingLimit != null ? config.downPollingLimit : DEFAULT_DOWN_POLLING_LIMIT; 
} 

Registrableインターフェイス。したがって、DefaultRemoteProxyを使用してノードを登録しようとする人は、がRegistrableインターフェイスを実装していないため、常に失敗します。

これはあなたのために働くでしょうか?

+0

ありがとうございます。これは私のニーズに対応します。しかし、私は 'instanceof Registroble'を' instanceof CustomProxy'に変更して、CustomProxyと 'Registrable'インターフェースも実装した別のプロキシを使わなくてはなりません。 –

関連する問題