Web アプリの画面(ブラウザ)を自動で操作してくれるテストツールの Selenium 。
公式サイトはこちら。
Selenium - Web Browser Automation
今回は Selenium WebDriver を使って Java で Selenium の導入を行っていきます。
Java 以外の言語を使うとしても、WebDriver の入手方法などは参考になると思います。
Selenium は一つの テスティングフレームワークですが、複数の部品により構成されています。各部品を表す関連用語についてしっかり押さえておきましょう。(この記事では「Selenium WebDriver」を使用します。)
次のサイトが Selenium の歴史も含めわかりやすくまとめられています。
Selenium何とかっていうツールがやたら色々あるのはどういうわけなのか | 品質向上ブログ
今回使ったツール類のバージョンはこちら。
Java : 11
Spring Tool Suite(IDE): 4.3.2
Selenium Server : 3.9.1
さっそく作っていきましょう。
Maven プロジェクトの作成
次のサイトを参考に Maven プロジェクトを作成し、使用する Java のバージョンを変更します。
www.shookuro.com
依存関係に Selenium を追加
pom.xml に dependency を追加します。
<dependencies> <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-java</artifactId> <version>3.9.1</version> </dependency> </dependencies>
「selenium-java」の代わりに「selenium-server」でも大丈夫です。違いはよくわかりませんが「selenium-java」は 1 KB に対し「selenium-server」は 579 KB と大きいのでたくさんの機能があるのでしょう。
「selenium-server」にしかない機能が必要になるまでは「selenium-java」で良いと思います。
WebDriver の入手
続いて WebDriver を入手します。
ブラウザごとに WebDriver は異なっており、入手先も異なります。
Selenium の公式サイトに各 WebDriver の取得元 URL が記載されています。
https://www.seleniumhq.org/download/
ここでは例として Firefox のドライバを取得します。
下記 URL にアクセスして、自分の環境にあった zip 形式の Driver をダウンロードしてください。
https://github.com/mozilla/geckodriver/releases
私の場合は Windows の 64 bit バージョンを取得しました。
zip を展開すると geckodriver.exe というファイルがあります。
手っ取り早いのはこれをプロジェクト直下に置いてしまいます。
もしくは任意の場所に格納し、プログラム内で「System.setProperty("webdriver.gecko.driver", "C:/xxx/xxx/geckodriver.exe");」と場所を指定しても OK。
プログラムから WebDriver が見つからない場合「java.lang.IllegalStateException: The path to the driver executable must be set by the webdriver.gecko.driver・・・」が発生します。
プログラムを書く
コメントで簡単な解説をしています。
package org.yyama.selenium_sample; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.support.ui.ExpectedCondition; import org.openqa.selenium.support.ui.WebDriverWait; /** * Hello world! * */ public class App { public static void main(String[] args) { // WebDriver が存在するパスを指定する。プロジェクト直下においてあれば不要。 // System.setProperty("webdriver.gecko.driver", "C:/org/yyama/geckodriver.exe"); // ① WebDriver を取得する WebDriver driver = new FirefoxDriver(); // ② Google の検索ページを開く driver.get("http://www.google.com"); // ③ 検索文字を入力するテキストボックスを取得 WebElement element = driver.findElement(By.name("q")); // ④ 検索文字を入力する element.sendKeys("5兆円おくれ"); // ⑤ サブミット element.submit(); // ⑥ ページタイトルが変わるまで待つ。10 秒待っても変わらない場合、 // org.openqa.selenium.TimeoutException」が発生する。 (new WebDriverWait(driver, 10)).until(new ExpectedCondition<Boolean>() { public Boolean apply(WebDriver d) { return d.getTitle().toLowerCase().startsWith("5兆円おくれ"); } }); // ⑦ ブラウザを閉じる。(ここでは勝手に閉じないようにコメントにしてある) // driver.quit(); } }
実行してみる
自動で Firefox が起動し、文字の入力および遷移が行われていることが確認できるます。
検索結果後のページです。
まとめ
簡単にまとめると WebDriver を入手し、Selenium の依存関係を追加するだけです。
自動化できるところはどんどん自動化していきましょう。
次の記事では自動でスクリーンショットを取得する方法をまとめました。
www.shookuro.com
それでは!
- 作者: Satya Avasarala,Sky株式会社玉川竜司
- 出版社/メーカー: オライリージャパン
- 発売日: 2014/09/18
- メディア: 大型本
- この商品を含むブログ (5件) を見る
Selenium実践入門 ―― 自動化による継続的なブラウザテスト (WEB+DB PRESS plus)
- 作者: 伊藤望,戸田広,沖田邦夫,宮田淳平,長谷川淳,清水直樹,Vishal Banthia
- 出版社/メーカー: 技術評論社
- 発売日: 2016/02/02
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (4件) を見る