依存関係
ChromeDriver のバイナリは、各種ホスト用の ZIP ファイルとしてパッケージ化されている ダウンロード ページから入手できます。
対応アプリ
ChromeDriver は、Chrome ブラウザ(バージョン 30 以降)と Android 4.4(KitKat)以降の WebView ベースのアプリのうち、ウェブ デバッグと JavaScript が有効になっているもの。Chrome アプリは次の場所からインストールできます。
安定版: https://play.google.com/store/apps/details?id=com.android.chrome
Selenium WebDriver 言語バインディング
テストの作成には、選択した言語用に標準の Selenium プロジェクトの WebDriver 言語バインディングをインストールする必要があります。このライブラリは、使いやすいローカル パッケージ マネージャーまたは Selenium プロジェクト(https://www.seleniumhq.org/download/)から入手できます。たとえば、Python の言語バインディングは pip を使用してインストールできます。
$ pip install selenium
Android SDK
SDK は次の場所からダウンロードできます。 developer.android.com/sdk/
デバイスの要件
Chrome バージョン 33 以降では、ユーザーに root 権限のあるデバイスは必要ありません。テストを実行する場合
以前のバージョンの Chrome では、ChromeDriver としてデバイスの root 権限を取得する必要があった
Chrome のコマンドを設定するために /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
ChromeDriver は、通常は Selenium ライブラリから起動することをおすすめしますが、コマンドラインから手動で起動することもできます。詳しくは、スタートガイドをご覧ください。
$ ./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()
複数のデバイスに対応
セッションで特定のデバイスを使用するには、次のように androidDeviceSerial
を指定します。
Chrome オプション。
シリアル番号が指定されていない場合、サーバーは次の場所にある未使用のデバイスを選択します。 各セッションに関連付けることができます。すべてのデバイスでエラーが返されると、 すでにアクティブなセッションがあるため、テストでは、ユーザーが呼び出されたときに 終了です。
wd/hub
に接続
テストで wd/hub
に接続する場合は、--url-base=wd/hub
を追加します。
次の処理が行われます。
$ ./chromedriver --url-base=wd/hub