Android

最新の ChromeDriver のバイナリは、さまざまなホスト プラットフォーム用の zip ファイルとしてパッケージ化されています。

以前のバージョンの ChromeDriver は、ダウンロードから入手できます。

対応アプリ

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

Chrome アプリは、以下の方法でインストールできます。

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

Selenium WebDriver 言語バインディング

テストを記述するには、選択した言語用の標準 Selenium プロジェクト WebDriver 言語バインディングをインストールする必要があります。このライブラリは、ローカル パッケージ マネージャーまたは Selenium プロジェクトで入手できます。

たとえば、Python の言語バインディングは pip でインストールできます。

$ pip install selenium

Android SDK

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

デバイスの要件

Chrome バージョン 33 以降では、root 権限を持つデバイスは必要ありません。以前のバージョンの Chrome でテストを実行する場合は、ChromeDriver が Chrome のコマンドライン引数を設定するために /data/local ディレクトリへの書き込みアクセス権を必要とするため、デバイスを root にする必要があります。

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