NativeDriverはAndroidおよびiOSネイティブアプリのテスト自動化を提供するものだ。これはWebDriver APIを実装している。
GoogleはNativeDriverを開発した。これはWebDriver APIの一実装であり、 SeleniumがやっているようなブラウザUIではなく、ネイティブUIを使ったアプリの機能テストを実行するためのテスト自動化フレームワークだ。Googleはネイティブアプリのために新しいものを作るかわりに、WebDriver APIを再利用することにした。これらには多くの類似点があるためだ。どちらも、クリック、タイプ、テキスト読み込み、ウィンドウ切り替えといった同じUI操作をコントロールする。また、WebDriverになじみのあるユーザは、別のAPIを学ぶ必要がなく、すぐにNativeDriverを使い始めることができる。
NativeDriverは、さまざまな状況下でアプリがどのように振る舞うかをテストするために、自動化したUIコマンドをネイティブアプリ内で実行するのに利用できる。Androidにおいて、NativeDriverはInstrumentationを利用している。これはアプリケーション内部で通常機能するサイクルの外部において、さまざまなOSコンポーネントをプログラムからコントロールするメカニズムだ。例えば、簡単なNativeDriverテストは次のようになる。
AndroidNativeDriver driver = new AndroidNativeDriverBuilder().withDefaultServer().build();
driver.startActivity("com.google.android.maps.MapsActivity");
// placesボタンをクリックしてPlacesアクティビティを開く(検索ボックスの右)
AndroidNativeDriver btn= driver.findElement(By.id("btn_header_places"));
btn.click();
// Placesウィンドウを閉じる。AndroidのBackボタンを押すのと等価
driver.navigate().back();
// デバイスを回転してlandscapeモードでUIを表示
driver.rotate(ScreenOrientation.LANDSCAPE);
今のところ利用できるのはAndroid版だけだが、GoogleはまもなくiOS版をリリースすると約束している。Windows版もプロトタイプフェーズにある。
このモバイルOSのためのテストフレームワークのほかにも、GoogleはモバイルブラウザのためのWebDriverも公開している。これはAndroidおよびiOSのブラウザで実行するWebアプリ向けのテストをサポートするものだ。Blackberry向けのプロジェクトもある。