Android

最新的 ChromeDriver 二进制文件已打包为适用于各种主机平台的 ZIP 文件。

您可以在下载部分找到较低版本的 ChromeDriver。

支持的应用

ChromeDriver 支持在 Chrome 浏览器(30 及更高版本)以及启用了Web 调试JavaScriptAndroid 4.4 (KitKat) 及更高版本中基于 WebView 的应用上运行测试。

您可以通过以下方式安装 Chrome 应用:

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

Selenium WebDriver 语言绑定

您需要为所选语言安装标准 Selenium 项目 WebDriver 语言绑定,才能编写测试。此库可在您的本地软件包管理器或 Selenium 项目中找到。

例如,您可以使用 pip 安装 Python 的语言绑定。

$ pip install selenium

Android SDK

您可以访问 developer.android.com/sdk/ 下载该 SDK。

设备要求

从 Chrome 版本 33 开始,无需使用已取得 root 权限的设备。如果要在较低版本的 Chrome 上运行测试,设备必须取得 root 权限,因为 ChromeDriver 需要对 /data/local 目录拥有写入权限,才能设置 Chrome 的命令行参数。

运行 ChromeDriver

  1. 启动 Android SDK 的 Android 调试桥 (adb) 服务器:

    $ adb start-server
    
  2. 如果在版本 33 之前的 Chrome 应用上进行测试,请确保 adb shell 对设备上的 /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 的 activity 的名称。
  • androidProcess:(可选)托管 WebView 的 activity 的进程名称(由 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 选项。

如果未指定序列号,服务器会随机选择一个未使用的设备与每个会话相关联。如果所有设备都已拥有有效会话,则会返回错误,因此测试应确保在完成时调用 quit。

连接到wd/hub

如果您的测试预计会连接到 wd/hub,您可以在启动服务器时添加 --url-base=wd/hub

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