<!-- markdown -->

# 目次
[TOC]

# 趣旨
Selenium の WebDriverとかいろいろ、つまるので、メモする

# pom.xml
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)

という一連のテスト自動化が実現できます。

# その他
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

ant単体で動くがJenkins通してantするとChromeWebDriverが起動しない。

なんでやねん

WebDriverのchromeとfirefoxを使ってみて思ったことがある。

それは、WebDriverの作者はfirefoxをメインで使っているだろう。ということ、

動作の安定性、速度、chromeDriverよりも勝っているのだ。

## firefoxの設定

Custom Firefox profile for Selenium

http://www.qaautomation.net/?p=45

## chromedriver.exeのオプション
http://stackoverflow.com/questions/15822803/silencing-chromedriver-exe-logging

# Selenium を使用して Web テストを自動化する
http://www.ibm.com/developerworks/jp/opensource/library/os-webautoselenium/?ccy=jp&cmp=dw&cpb=dwope&cr=dwrss&csr=010612&ct=dwrss

AutoItを使って、ファイル選択の自動化について述べられています。

# seleniumIDE

## わかりやすいseleniumIDEの日本語の解説ページ
http://d.hatena.ne.jp/rti7743/20090913

http://iflaglabs.jp/original7.html

Firefox のアドオンとして、配布されています。Web アプリケーションに対するユーザ操作を記録し、Selenium テストとして保存・再生します。FireFox上の操作を録画し、テストケースとして保存する機能があります。

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   最終更新のRSS