2017-08-02 6 views
1

私はWebGUIのテストが必要なプロジェクトに入りました。セレンはJenkinsとの組み合わせでこれを使用してタスクをスケジュールし、テストを実行します。これらはすべて1台のサーバーで処理されます(Linux)。SeleniumとWebDriversについての混乱

通常のテストはうまくいきますが、WebGUIテストは失敗し、それらを機能させるはずです。しかし、Jenkinsのプラグイン "Selenium Grid"(それは必要なのでしょうか)、JUnitのテストではセレンのlibaryを利用したテストとヘッドレスブラウザのセットアップが非常に混乱しています。

ジェンキンスのプラグイン "Selenium Grid"の役割は何ですか?また、セレニウムライブラリはヘッドレスブラウザ(WebDriversの役割?)とどのように通信しますか? 私は既にセレンのハブとノードについて知っていますが、どのようにこれにアプローチするのか分かりません。

私は誰かが...私の混乱をクリーンアップし、次のWebサイトから取得した

+1

ドライバの役割は、リクエストを送信してコードをWebブラウザプロセスと通信できるようにすることです。 IIRCの場合、Selenium Gridはサイトで一度に複数のユーザーをエミュレートすることになっています。各ユーザーは独自の処理を行います。このようにして、複数のマシンでテストを並行して実行することができます。 –

+0

使用するマシンは1台だけです。サーバーなので、GUIは利用できません(XVFBのインストール制限があるため)、FirefoxとIEのテストが必要です。 このマシンは、唯一のノードとして再度起動するSelenium Hubでなければなりませんか?または、WebDriverでJavaのSeleniumライブラリを使用できますか? – GxTruth

答えて

1

私を助けることができると思います。 https://wiki.jenkins.io/display/JENKINS/Selenium+Plugin

このプラグインは、マスター上で、次のよう

  • にセレングリッドを設定ジェンキンスグローバル構成に特に構成されていない限り、セレングリッドハブは、ポート4444で開始されます。これですべてのテストが接続されます。
  • 各スレーブに対して、必要なバイナリがコピーされ、Selenium RCが開始されます。
  • RCとSelenium Grid Hubが自動的に結合されます。

ここで質問が必要ですか?

これはプロジェクトの要件です。

  • (今すぐまたは近い将来に)テストを並行して実行する必要があります(時間を短縮するか、ブラウザの互換性テストを行うか)。
+0

WebGUIのテストはごくわずかなので、おそらく並列テストは必要ありません。しかし、FirefoxとInternet Explorerはサポートされているはずなので、テストが必要です。 しかし、1台のマシンしか関与していないので、ブラウザ/ OSが異なるSeleniumノードを稼働するマシンは12台ありません。これをシミュレートするために、異なるWebDriver(異なるモード?)を使用できますか? – GxTruth

+1

はいできます。プラグインを削除して実行をあるノードにバインドするだけです。 –

+0

もう1つ質問があります。 WebDriversは、実際のブラウザを外部アプリケーションとして必要とするヘッドレスブラウザを使用しているようです。これが当てはまるのですか、セレニウムは外部ツールを必要とせずにヘッドレスブラウザを実装していますか? – GxTruth

2

セレングリッドは、スケーラブルな自動ブラウザ環境を設定するために使用できます。自動GUIテストによく使用されます。これは、ハブと1つまたは複数のノードで構成されます。

Selenium Hubを開始し、結果のURLを保存する必要があります。

次に、希望の数のセレンのノードは、ハブのURLを参照して開始する必要があります。ノードはハブに自身を登録します。

Selenium Javaを使用して、RemoteWebDriverインスタンスを作成し、オプションでSelenium HubのURLを指定することができます。このwebdriverは単なるJava APIです。実際の作業はSelenium Node環境で行われます。

Java APIを使用して、WebDriverインスタンスで目的の操作を実装できます。実行時には、コードは実行中のSelenium環境にすべての呼び出しを委譲します。

ハブとノードを実際に起動するには、複数の方法があります。Jenkins Pluginがこれを行うことができます。Docker、ローカルプロセスなどを使用できます。私はあなたが決して切り替えることができない限り、あなたの設定をJenkinsに直接バインドしないことをお勧めします。 Jenkins Selenium Plugin

はあなたとwebdriverをを作成する必要がありますURLを指定:jenkins.mydomainはおそらくあなたのLinuxサーバのIPになります

new RemoteWebDriver(new URL("http://jenkins.mydomain:4444/wd/hub"), capability); 

。そのすぐ上には、外部ノードも受け入れるということを示す行があります。私はプラグインに慣れていないので、デフォルトで1つ以上のノード自体を設定するかどうかはわかりません。

+0

この説明をお寄せいただきありがとうございます。 Selenium Grid(Jenkins Plugin)によれば、Jenkinsはノードが接続できるハブに変わります。 WebDriver Implementationを使用して、Selenium HubのURL +ポートを与え、WebDriverクラスを使用して自分のWebサイトをテストできます。 HUBとNodeは同じマシンではないので、混乱してしまいます。 – GxTruth

+0

@GxTruth Jenkinsプラグインに関する情報を追加しました。 –

関連する問題