最新の 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 を実行する
Android SDK の Android Debug Bridge(adb)サーバーを起動します。
$ adb start-server
バージョン 33 より前の Chrome アプリでテストする場合は、adb シェルがデバイスの
/data/local
ディレクトリへの読み取り / 書き込みアクセス権を持っていることを確認します。$ adb shell su -c chmod 777 /data/local
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