Selenium WeDriverは、ブラウザの操作をシミュレートし、Webアプリケーションの画面周りの試験を実施することができるテストツールです。本書は、Seleniumの導入と構成の仕方、テストの書き方などについて、包括的に解説する初めての書籍です。ソースコードも含め、非常に具体的にテストの書き方が解説されています。また、WebのUIテストを書く上で最近注目されている、PageObjectパターンについてもしっかり解説されており、現場の技術者にとって非常に参考になる内容です。
https://www.ohmsha.co.jp/book/9784873116952/
正誤表やDLデータ等がある場合はこちらに掲載しています
訳者まえがき
はじめに
1章 WebDriverとWebElementの紹介
1.1 Seleniumの歴史
1.1.1 Selenium 1、別名Selenium Remote Control、別名 Selenium RC
1.1.2 Selenium 2、別名Selenium WebDriver、別名WebDriver
1.1.3 Selenium 1とSelenium 2との違い
1.2 Eclipseでのプロジェクトのセットアップ
1.3 WebElement
1.3.1 WebDriverでのWebElementの指定
1.3.2 WebElement上でのアクション
1.4 まとめ
2章 WebDriverの高度な操作
2.1 アクション、ビルド、実行
2.1.1 マウスベースの操作
2.1.2 キーボードベースの操作
2.2 まとめ
3章 WebDriverの機能
3.1 ブラウザーの機能の設定
3.2 スクリーンショットの取得
3.3 ターゲットウィンドウとiFrameの指定
3.3.1 ウィンドウの切り替え
3.3.2 フレーム間の切り替え
3.3.3 アラートの処理
3.4 ナビゲーション
3.5 WebElement群のロードの待機
3.5.1 暗黙の待ち時間
3.5.2 明示的な待ち時間
3.6 クッキーの扱い
3.7 まとめ
4章 様々なWebDriver
4.1 FirefoxDriver
4.1.1 Firefoxのプロファイル
4.1.2 Firefoxのプリファレンスの処理
4.1.3 FirefoxBinary
4.2 InternetExplorerDriver
4.2.1 InternetExplorerDriverのインストール
4.2.2 インターネットエクスプローラー用の初めてのテストスクリプトの作成
4.2.3 Internet Explorer driverサービスの構築
4.2.4 IEDriverの機能
4.3 ChromeDriver
4.3.1 .ChromeDriverのインストール
4.3.2 Chrome用の初めてのテストスクリプトの作成
4.3.3 ChromeOptionsの利用
4.4 SafariDriver
4.4.1 Safari用の初めてのテストスクリプトの作成
4.5 OperaDriver
4.5.1 OperaDriverのインストール
4.5.2 Opera用の初めてのテストスクリプトの作成
4.6 まとめ
5章 WebDriverのイベント
5.1 EventFiringWebDriverとEventListenerクラスの紹介
5.2 EventListernerのインスタンスの生成
5.2.1 WebDriverEventListenerの実装
5.2.2 AbstractWebDriverEventListenerの拡張
5.2.3 WebDriverのインスタンスの生成
5.2.4 EventFiringWebDriverとEventListenerのインスタンスの生成
5.2.5 EventFiringWebDriverへの EventListenerの登録
5.2.6 イベントの実行と検証
5.3 様々な WebDriverのイベントリスナー
5.3.1 .WebElementの値の変更の待ち受け
5.3.2 WebElementのクリックの待ち受け
5.3.3 WebElementの検索イベントの待ち受け
5.3.4 ブラウザーの戻るナビゲーションの待ち受け
5.3.5 ブラウザーの進むナビゲーションの待ち受け
5.3.6 ブラウザーの navigateToイベントの待ち受け
5.3.7 スクリプトの実行の待ち受け
5.3.8 例外の待ち受け
5.3.9 .EventFiringWebDriverからの EventListenerの登録解除
5.4 まとめ
6章 I/Oの処理
6.1.F ileHandlerクラス
6.1.1 コピー元からコピー先のディレクトリへのファイルのコピー
6.1.2 ファイル名のサフィックスに基づくディレクトリ間のファイルコピー
6.1.3 ディレクトリの作成
6.1.4 ファイルやディレクトリの削除
6.1.5 isZipped()メソッド
6.1.6 makeExecutable()メソッド
6.1.7 makeWritable()メソッド
6.1.8 ファイルの読み取り
6.1.9 canExecute()メソッド
6.2 TemporaryFilesystemクラス
6.2.1 デフォルトの一時ファイルシステム
6.2.2 DefaultTmpFS内でのディレクトリの作成
6.2.3 一時ディレクトリの削除
6.2.4 複数のファイルの削除
6.2.5 一時ファイルシステムの変更
6.3 Zipクラス
6.3.1 ディレクトリの圧縮
6.3.2 ディレクトリの展開
6.4 まとめ
7章 RemoteWebDriverとWebDriverBackedSelenium
7.1 RemoteWebDriverとは
7.1.1 RemoteWebDriverサーバー
7.1.2 RemoteWebDriverクライアント
7.1.3 RemoteWebDriverでの Firefoxの利用
7.1.4 RemoteWebDriverとInternet Explorerの利用
7.1.5 RemoteWebDriverとChromeの利用
7.1.6 スクリーンショットを取るための RemoteWebDriverの拡張
7.2 JSON wireプロトコル
7.3 独自のコードによるクライアントライブラリの置き換え
7.4 WebDriverBackedSelenium
7.5 まとめ
8章 Selenium Grid
8.1 Selenium Gridとは
8.2 ハブ
8.3 ノード
8.4 Selenium Gridを使うための既存のスクリプトの修正
8.4.1 登録されていない capabilityを要求するリクエスト
8.4.2 ノードがビジーの際のリクエストのキューイング
8.4.3 capability群にマッチする 2つのノードの扱い
8.5 Selenium Gridの設定
8.5.1 ノードの設定パラメータの指定
8.5.2 ハブの設定パラメータ
8.5.3 設定を行うための様々な方法
8.6 まとめ
9章 PageObjectパターン
9.1 WordPress用のテストケースの作成
9.1.1 テストケース 1.. WordPressに対する新しいポストの追加
9.1.2 テストケース 2.. WordPressからのポストの削除
9.1.3 テストケース 3.. WordPressのポスト数を数える
9.2 PageObjectパターンとは
9.2.1 @FindByアノテーションの利用
9.2.2 PageFactory
9.3 PageObjectsの設計の推奨プラクティス
9.3.1 Webページをサービスプロバイダと見なす
9.3.2 暗黙のサービスを常に探す
9.3.3 PageObject内での PageObjectの利用
9.3.4 PageObjectのメソッドを、ユーザーのアクションではなく、サービスとして考える
9.3.5 WebElementの実行時の指定
9.3.6 ページ固有の細部とテストスクリプトの分離
9.4 ローダブルコンポーネント
9.5 WordPressのエンドトゥエンドのサンプル
9.5.1 全PageObjectの紹介
9.5.2 テストケースの紹介
9.6 まとめ
10章 iOSとAndroidアプリケーションのテスト
10.1 様々なモバイルアプリケーションの形態
10.2 利用できるソフトウェアツール群
10.3 Appiumを使ったiOSとAndroidのテストの自動化
10.3.1 iOSアプリケーションのテストの自動化
10.3.2 Androidアプリケーションのテストの自動化
10.3.3 Appiumを動作させるための必要事項
10.3.4 Appiumのインストール
10.3.5 iOSの自動化
10.3.6 Androidの自動化
10.4 まとめ
付録A CI(継続的インテグレーション)ツールの活用
A.1 CIの必要性
A.2 Jenkins
A.3 テストコードを CIに載せる準備
A.3.1 .コマンドラインからのテスト実行
A.3.2 テストコードのリポジトリ登録
A.4 Jenkinsとテスト用ブラウザーのインストール
A.5 Jenkins上でのテスト実行
A.5.1 .テスト用ジョブの作成と実行
A.5.2 結果の確認
A.6 クラウドサービスを利用したテストの並列実行
A.6.1 .ローカル PCから SauceLabsでのテストを実行する
A.6.2 Jenkinsで SauceLabs用のプラグインをインストールする
A.6.3 .Jenkinsでジョブの設定を行う
A.7 CIツールでテストを実行する際のTips
A.7.1 .専用の環境
A.7.2 テストデータの制御
A.7.3 ジョブは小分けにしておく
A.7.4 テスト失敗時のスクリーンショットをとる
A.8 最後に
付録B PythonでのWebDriverの利用
B.1 Python用 Selenium WebDriverバインディングのインストール
B.2.W ebDriverからのFirefoxの利用
B.3 .ipythonからのインタラクティブな WebDriverの利用
B.4 グリッドへの接続と、RemoteWebDriverでのスクリーンショットの取得
B.5 まとめ
索 引