Android

依赖项

ChromeDriver 的二进制文件可以在下载页面上找到适用于各种主机平台的 ZIP 文件。

支持的应用

Android 4.4 (KitKat) 开始,ChromeDriver 支持在 Chrome 浏览器(30 及更高版本)和基于 WebView 的应用上运行测试,这些应用必须支持网络调试JavaScript。您可以从以下位置安装 Chrome 应用:

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

Selenium WebDriver 语言绑定

您需要为所选语言安装标准 Selenium 项目 WebDriver 语言绑定,以编写测试。您可以从友好的本地软件包管理器或 selenium 项目 (https://www.seleniumhq.org/download/) 获取此库。例如,可以使用 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 选项。

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

关联到“wd/hub

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

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