皆さん こんにちは
WebアプリをAndroid端末でテストする時、ブラウザは何をお使いですか?
Android 4.2系以降Chromeが標準で搭載されるようになりましたが、まだまだ、標準ブラウザが主流のようです。
最近、Andorid 5系のLolipopにバージョンアップできる機種もやっと増えてきた事によって、今後Chromeの比率も高くなるのではないのでしょうか?
スマホの自動テストと言えばAppiumですが、今回は、「ChromeDriver」で、お手軽!にChrome for Androidのテスト自動化環境を構築する方法についてです。
環境
- PC : MAX OSX 10.9.5
- Java 1.7
- ChromeDriver 2.15 (MAC用)
- Selenium 2.45
- 端末 : Android Nexus 5
実機でテストします。
手順
①AndroidとPC側の設定
・Androidを接続する
AndroidをデバックモードでPCに接続し、ターミナルでデバイスが接続されていることを確認する。
adb devices
・chromedriverを起動する
chromedriverを保存しているディレクトリに移動し、ターミナルで以下を実行する。
./chromedriver --whitelisted-ips --url-base=wd/hub
※–whitelisted-ips : Androidを接続したPC以外からテストスクリプトを実行する場合。
※–url-base=wd/hub : 接続するベースURLに付加する場合。
②実際に実行するソースの作成・実行(Java)
public class TestAndroidChrome { public static void main(String[] args) throws InterruptedException, MalformedURLException { // TODO Auto-generated method stub DesiredCapabilities capability; ChromeOptions chromeOptions = new ChromeOptions(); chromeOptions.setExperimentalOption("androidPackage", "com.android.chrome"); capability = new DesiredCapabilities(); capability.setCapability(ChromeOptions.CAPABILITY,chromeOptions); WebDriver driver = new RemoteWebDriver(new URL("https://localhost:9515/wd/hub"), capability); driver.get("https://www.google.co.jp"); Thread.sleep(2000); WebElement searchBox = driver.findElement(By.name("q")); searchBox.sendKeys("ChromeDriver"); searchBox.submit(); Thread.sleep(5000); driver.quit(); } }
ソースを実行すると、AndroidのChromeが立ち上がり、自動実行される。
※Androidに入っているChromeのVersionが古いと、Chromeの画面だけは立ち上がるが、動かないことがあるので注意。
※8行目:Chrome for Androidを指定。
※11行目:他のPCに繋いだ端末へテストする場合、IPを書き換えてください。
上記以外のテストコードは、Appiumや、Selendoroid等で利用していたソースがそのまま使えます。
ChromeDriverは、更新頻度も高く動かなくなると言うこともほぼありませんし、先行バージョン(Beta等)にも対応しています。
さらに、なんと言ってもダウンロードして起動するだけで環境ができるというお手軽さは、他のOSSにはないと思いました。
AndroidでWebアプリのテスト自動化するなら、ChromeDriverを使ってみてはいかがでしょうか。