
皆さん こんにちは
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を使ってみてはいかがでしょうか。
