開発者向けヒント
このドキュメントは以前 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 の依存関係をコンパイルし、すべてのテストを実行します。サポートライブラリのテストも同様です |
firefox | FirefoxDriver をコンパイルします |
htmlunit | HtmlUnitDriver をコンパイルします |
ie | InternetExplorerDriver をコンパイルします。これは非 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}