開発者向けヒント

Crazy Fun で Selenium テストスイートを実行する方法の詳細。

このドキュメントは以前 wiki にありました

個々のテストの実行

WebDriver を開発する際、特定のドライバのテストスイート全体ではなく、単一のテストを実行したいことがよくあります。

この方法で、特定のテストクラス内のすべてのテストを実行できます。

./go test_firefox onlyRun=CombinedInputActionsTest

また、コマンドラインから直接、次のように入力して単一のテストを実行することもできます。

./go test_firefox method=foo

エラーまたは失敗で停止しない

テストスイートはデフォルトでエラーと失敗で停止します。この動作を無効にするには、haltonerror または haltonfailure 環境変数を 0 に設定します。

テストのログの確認

テストを実行すると、テスト結果は画面に表示されません。結果は `./build/test_logs` フォルダに書き込まれます。一対のファイルが書き込まれます。ファイル名は比較的整合性があり、実行されたテストの詳細が含まれています。対は txt ファイルと xml ファイルで構成されています。xml ファイルには、パス、Ant バージョンなど、ランタイム環境に関する詳細情報が含まれています。これらのファイルは、同じテストターゲットが次回実行されるときに上書きされるため、結果が重要な場合はアーカイブすることをお勧めします。

Rake の使用

Rake は、「make」や「ant」などの他のビルドツールを使用するのと非常によく似ています。パラメータとして「ターゲット」を指定して実行でき、一度に複数のターゲットを追加できます。WebDriver は ruby のインストールに依存せず、JRuby を使用するため、rake は直接関与すべきではありません - 代わりにgoスクリプトを使用してください。たとえば、ビルドをクリーンアップしてから HtmlUnitDriver テストをビルドして実行するには

./go clean test_htmlunit

使用されるデフォルトのターゲットは、コードをコンパイルし、すべてのテストを実行します。より興味深いターゲットは

ターゲット説明
クリーンビルドディレクトリの内容を削除し、コンパイル済みのすべてのアーティファクトを削除します
テストHtmlUnitDriver、FirefoxDriver、およびInternetExplorerDriver の依存関係をコンパイルし、すべてのテストを実行します。サポートライブラリのテストも同様です
firefoxFirefoxDriver をコンパイルします
htmlunitHtmlUnitDriver をコンパイルします
ieInternetExplorerDriver をコンパイルします。これは非 Windows システムでは C++ をコンパイルしませんが、使用している OS に関係なく、常に Java をコンパイルします
supportこれが何をするか当ててみてください :)
test_htmlunit依存関係をコンパイルしてから、HtmlUnitDriver のテストを実行します。この表のすべてのコンパイルターゲットに対して、同じ「test_x」パターンに従うことができます。

Javaテストでリモートデバッガを実行する

デバッグモードでテストを実行し、リモート Java リスナー(eclipse または intellij でセットアップするもの)を待機できます。

./go debug=true suspend=true test_firefox

Firefoxドライバのデバッグ

Firefoxプロセス自体からの出力を取得する

これは通常、Firefox の起動に関する問題をデバッグするのに役立ちます。Java システムプロパティ webdriver.firefox.logfile は、FirefoxDriver に出力をファイルにリダイレクトするように指示します

java -Dwebdriver.firefox.logfile=/dev/stdout -cp selenium-2.jar <sometest>

エラーコンソールへの出力

Firefox ドライバ拡張機能のデバッグに使用される一般的な手法は、デバッグステートメントです。拡張機能内のほぼすべての Javascript コードから、次の 2 つの方法を使用できます。

  • Logger.dumpn() - コンソールに文字列をログ出力します(引数を文字列に変換します)。例: Logger.dumpn("Found element: " + node)
  • Logger.dump() - 単一の引数(オブジェクト)を取得し、そのすべての内容(実装されたインターフェース、データフィールド、メソッドなど)をダンプします。

エラーコンソールからファイルへの出力を取得する

Logger ユーティリティを使用して生成された出力を表示するには、Firefox のエラーコンソールを開く必要があります。リモートマシンでは困難または完全に不可能です。幸いなことに、出力の内容をファイルにダンプする方法があります。

FirefoxProfile p = new FirefoxProfile();
p.setPreference("webdriver.log.file", "/tmp/firefox_console");
WebDriver driver = new FirefoxDriver(p);
...

webdriver.log.file プリファレンスは、Logger にコンソールのすべての内容を指定されたファイルにダンプするように指示します。webdriver.log.file

コマンドラインへのさらに多くの出力を取得する

Firefox からの追加のロギングが有益であると思われる場合は、デバッグレベルを最大限に上げることができます。

export NSPR_LOG_MODULES=all:3

この環境変数を設定すると、Firefox は追加のメッセージをコンソールにログ出力します。webdriver.firefox.logfile と組み合わせてこの環境変数を使用すると、Firefox のコンソールへの出力を取得できます。

Internet Explorerドライバのデバッグ

IEDriverServer.exe から詳細情報を取得するには、オプション devMode=true を指定してテストを実行できます。このオプションはロギングレベルを DEBUG に設定し、ログ出力をファイル iedriver.log にリダイレクトします

./go test_ie devMode=true

テストの追加

WebDriver のテストケースのほとんどは、java/client/test/org/openqa/selenium にあります。たとえば、要素のクリックに関する問題を実証するために、テストケースを ClickTest に追加する必要があります。テストケースにはすでにドライバインスタンスがあります - 作成する必要はありません。テストは、common/src/web から提供される、インプロセスサーバーによって提供されるページを使用します。それらの URL は Pages クラスによって提供されるため、ページを追加するときは、Pages クラスにも追加します。

RemoteWebDriverServer を手動で操作する

ウェブブラウザまたは telnet などのツールを使用して、JSON プロトコルをデバッグするなど、RemoteWebDriverServer を操作できます。ローカルマシンにインストールされたサーバーのステータスを確認する簡単な例を次に示します。

ウェブブラウザで

http://localhost:8080/wd/hub/status/

telnet で

telnet localhost 8080

GET /wd/hub/status/ HTTP/1.0

Mac および Unix では一般的に curl を試してください

curl  http://localhost:8080/wd/hub/status

Linux では wget

wget http://localhost:8080/wd/hub/status

これらすべての場合において、RemoteWebDriverServer は次のように応答する必要があります。


{status:0} 
最終更新日:2022年1月10日: More wiki (#907) [deploy site] (adcf706a1ad)