*目次 [#yfa474e6] #contents *趣旨 [#h0b7f8f5] Selenium の WebDriverとかいろいろ、つまるので、メモする * pom.xml [#a48f0e3d] pom.xmlで追加する依存関係について、それぞれ説明します。 - 1. **Selenium WebDriver** (`selenium-java`) <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-java</artifactId> <version>4.18.1</version> </dependency> -- ブラウザの自動操作を行うためのコアライブラリ -- ブラウザの要素の検索、クリック、入力などの操作が可能 -- 最新の4.18.1では、Chrome、Firefox、Edgeなどの主要ブラウザをサポート -- 非同期処理の待機機能も提供 - 2. **JUnit Jupiter** (`junit-jupiter-api`, `junit-jupiter-engine`) <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-api</artifactId> <version>5.10.2</version> </dependency> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-engine</artifactId> <version>5.10.2</version> </dependency> -- Javaの標準的なテストフレームワーク -- テストケースの記述、実行、アサーションを提供 -- `@Test`、`@BeforeEach`などのアノテーションを提供 -- テストのライフサイクル管理機能を提供 -- `junit-jupiter-api`: テスト記述用API -- `junit-jupiter-engine`: テスト実行エンジン - 3. **WebDriverManager** (`webdrivermanager`) <dependency> <groupId>io.github.bonigarcia</groupId> <artifactId>webdrivermanager</artifactId> <version>5.7.0</version> </dependency> -- ブラウザドライバーの自動管理ツール -- ChromeDriver、GeckoDriver(Firefox用)などを自動でダウンロード・設定 -- ブラウザバージョンに適合したドライバーを自動選択 -- 手動でのドライバー管理が不要になる - 4. **AssertJ** (`assertj-core`) <dependency> <groupId>org.assertj</groupId> <artifactId>assertj-core</artifactId> <version>3.25.3</version> </dependency> -- より流暢なアサーション記述を可能にするライブラリ -- JUnitの標準アサーションより読みやすい文法を提供 -- 例: // JUnitの場合 assertEquals(expected, actual); // AssertJの場合 assertThat(actual).isEqualTo(expected); ``` - 5. **Maven Surefire Plugin** (`maven-surefire-plugin`) <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>3.2.5</version> </plugin> -- Mavenプロジェクトのテスト実行を管理するプラグイン -- `mvn test`コマンドでテストを実行する際に使用 -- テストレポートの生成 -- テスト実行の設定(パターンによる実行するテストのフィルタ、並列実行など) それぞれの依存関係で`<scope>test</scope>`を指定しているのは: - これらのライブラリがテスト時のみ必要で、本番環境には不要なため - 最終的なアプリケーションのサイズを抑制 - テストコードと本番コードの依存関係を明確に分離 これらのライブラリを組み合わせることで: - 1. ブラウザの自動操作(Selenium) - 2. テストケースの記述と実行(JUnit) - 3. ドライバーの自動管理(WebDriverManager) - 4. 読みやすいアサーション(AssertJ) - 5. テスト実行の管理(Maven Surefire) という一連のテスト自動化が実現できます。 *その他 [#p9d5127b] webdriverを使いはじめたので、メモする。 http://www.storklab.com/seleniumhq.org/docs/04_webdriver_advanced.html inputボックスに日本語を入れる http://ykmc09.blogspot.jp/2012/10/selenium-2-webdriver-input.html clickでとまってしまう対策 http://richtext.jp/pukiwiki/index.php?%B3%D0%BD%F1%A4%AD%2FSelenium2.0#f720d8ff なんか、confirmボタンを無理やりスキップする、ハック術がいまのところ有効 (2013/06/18時点でchromeDriverで確認した。) Web画面の自動テストの導入に失敗する理由とその対策 http://d.hatena.ne.jp/dkfj/20120531/1338422274 *webDriver [#mb597ca4] ant単体で動くがJenkins通してantするとChromeWebDriverが起動しない。 なんでやねん WebDriverのchromeとfirefoxを使ってみて思ったことがある。 それは、WebDriverの作者はfirefoxをメインで使っているだろう。ということ、 動作の安定性、速度、chromeDriverよりも勝っているのだ。 **firefoxの設定 [#zb6e6c2c] Custom Firefox profile for Selenium http://www.qaautomation.net/?p=45 **chromedriver.exeのオプション [#p0e02557] http://stackoverflow.com/questions/15822803/silencing-chromedriver-exe-logging *Selenium を使用して Web テストを自動化する [#qc848983] http://www.ibm.com/developerworks/jp/opensource/library/os-webautoselenium/?ccy=jp&cmp=dw&cpb=dwope&cr=dwrss&csr=010612&ct=dwrss AutoItを使って、ファイル選択の自動化について述べられています。 *seleniumIDE [#kef4e6bd] **わかりやすいseleniumIDEの日本語の解説ページ [#tabe66b3] http://d.hatena.ne.jp/rti7743/20090913 http://iflaglabs.jp/original7.html Firefox のアドオンとして、配布されています。Web アプリケーションに対するユーザ操作を記録し、Selenium テストとして保存・再生します。FireFox上の操作を録画し、テストケースとして保存する機能があります。