Android

依存関係

ChromeDriver のバイナリは、ダウンロード ページから、各種のホスト プラットフォーム用の ZIP ファイルとしてパッケージ化されています。

対応アプリ

ChromeDriver は、ウェブ デバッグJavaScript が有効になっている Chrome ブラウザ(バージョン 30 以降)と WebView ベースのアプリで、Android 4.4(KitKat)以降でテストを実行できます。Chrome アプリは以下からインストールできます。

安定版: https://play.google.com/store/apps/details?id=com.android.chrome

Selenium WebDriver 言語バインディング

テストを作成する言語用に、標準のセレン プロジェクトの WebDriver 言語バインディングをインストールする必要があります。このライブラリは、使いやすいローカルのパッケージ マネージャーまたは selenium プロジェクト(https://www.seleniumhq.org/download/)から入手できます。たとえば、Python 用の言語バインディングは pip を使用してインストールできます。

$ pip install selenium

Android SDK

SDK は developer.android.com/sdk/ からダウンロードできます。

デバイスの要件

Chrome バージョン 33 では、ユーザーに root 権限のあるデバイスは不要になりました。以前のバージョンの Chrome でテストを実行する場合は、デバイスの root 権限を取得する必要がありました。これは、Chrome のコマンドライン引数を設定するために、ChromeDriver では /data/local ディレクトリへの書き込みアクセス権が必要だったためです。

ChromeDriver を実行する

  1. Android SDK の Android Debug Bridge(adb)サーバーを起動します。

    $ adb start-server
    
  2. バージョン 33 より前の Chrome アプリでテストする場合は、adb シェルにデバイスの/data /local ディレクトリに対する読み取り/書き込みアクセス権があることを確認します。

     $ adb shell su -c chmod 777 /data/local
    
  3. 通常は、Selenium ライブラリ経由で ChromeDriver を起動することをおすすめします。ただし、コマンドラインから手動で起動することもできます。詳しくは、スタートガイドをご覧ください。

    $ ./chromedriver
    

Android 固有のオプション

以下の Chrome オプションは、Chrome アプリと WebView アプリの両方に適用できます。

  • androidPackage: Chrome アプリまたは WebView アプリのパッケージ名。
  • androidDeviceSerial: (省略可)アプリを起動するデバイスのシリアル番号(下記の「複数のデバイス」セクションをご覧ください)。
  • androidUseRunningApp: (省略可)データ ディレクトリをクリアした状態でアプリを起動するのではなく、すでに実行中のアプリにアタッチします。

以下の機能は WebView アプリにのみ適用されます。

  • androidActivity: WebView をホストするアクティビティの名前。
  • androidProcess: (省略可)WebView をホストするアクティビティのプロセス名(ps で指定します)。指定しない場合、プロセス名は androidPackage と同じであるとみなされます。

テストを実行

テストでは、androidPackage オプションを使用してアプリのパッケージ名を ChromeDriver に渡す必要があります。たとえば、最小限の Python テストは次のようになります。

from selenium import webdriver
options = webdriver.ChromeOptions()
options.add_experimental_option('androidPackage', 'com.android.chrome')
driver = webdriver.Chrome('./chromedriver', options=options)
driver.get('https://google.com')
driver.quit()

複数のデバイスに対応

特定のデバイスをセッションに使用するには、Chrome オプションとして androidDeviceSerial を指定します。

シリアル番号が指定されていない場合、サーバーは未使用のデバイスをランダムに選択し、各セッションに関連付けます。すべてのデバイスにすでにアクティブなセッションがある場合はエラーが返されるため、テストが完了したら必ず quit を呼び出します。

wd/hub に接続

テストで wd/hub への接続が想定される場合は、サーバーの起動時に --url-base=wd/hub を追加できます。

$ ./chromedriver --url-base=wd/hub