依存関係
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 を実行する
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