私の知る限り
何がそこにありません。つまり、あなた自身でこれを構築することができます。あなたの最初の要件すなわちを達成するために
。、
グリッド接続がハブに ノードを登録するための認証を要求する必要があります。
ここ
は、あなたがそれを行う方法です(外部登録を避けるために)(簡単のために、私は上の別の質問から私の答えを貼り付けコピーしていSO hereから)(
- が新しいマーカーインターフェイスを作成します。
Registrable
と呼んでください)
- 内容が
org.openqa.grid.selenium.proxy.DefaultRemoteProxy
の内容を複製する新しいクラスを作成します(私はこのアプローチをCLASSPATHオーバーライドと呼んでいますが、これにはもっとエレガントな名前が必要です)。この新しいクラスも呼び出されます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
インターフェイスを実装していないため、常に失敗します。これは、基本的に、このカスタムプロキシーの実装がなくても、人々が自分のノードをハブに登録しようとすることを防ぎます。 2番目の要件すなわちを達成するために
。、
はまた、グリッドに到達するために必要な認証(資格情報は機能によって を渡す必要があります)。次のようにあなたがそれを行うことができます
:
- ユーザーが
RemoteWebDriver
インスタンスをインスタンス化する際にそのDesiredCapabilities
にいくつかのカスタムキーを追加する必要があります。これらのカスタムキーは実際にはユーザーが渡すことができるユーザー名とパスワードの組み合わせである可能性があります。
- グリッド側では、
org.openqa.grid.internal.BaseRemoteProxy#hasCapability
メソッドをオーバーライドするカスタムプロキシーの実装を作成する必要があり、その中に入ってくるrequestedCapability
をそれがキー(資格情報)を持っているかどうかをチェックし、(データベースやその他の選択したデータソースと照合して)検証し、そうでなければfalse
を返します。キーが存在し、有効な場合は、機能一致をsuper.hasCapability()
への呼び出しに委任します。
このようにして、受信機能にあなたが探している認証メカニズムがない場合、グリッドは、グリッドの機能と一致しないという新しいセッション要求を拒否します。
それはあなたのためのトリックを行う必要があります。
基本的なHTTP認証をグリッドで実装する方法があるかどうかを知っていますか?代わりに、http:// username:passwordを実行する代わりに、 'DesiredCapability'で資格情報を渡す必要はありません。 @ mygrid.com:4444/wd/hub? –