Android

依赖项

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/) 获取。例如,可以使用 pip 安装 Python 的语言绑定。

$ pip install selenium

Android SDK

您可以从以下位置下载 SDK: developer.android.com/sdk/

设备要求

从 Chrome 33 版开始,不再需要已取得 root 权限的设备。如果运行测试 在较低版本的 Chrome 上,需要以 ChromeDriver 的形式获取 root 权限 需要对 /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