概述

使用 ChromeDriver 在 Chrome 中运行 Nightwatch.js 测试。

在本指南中,您将了解

  • 下载 ChromeDriver
  • 支持的 Chrome 功能
  • 支持的 Chrome 首选项
  • 在 Docker 中使用 Chrome

下载

步骤 1. 下载 ChromeDriver - 从 下载页面 下载适用于您的平台的最新版本的 ChromeDriver。

步骤 2. 配置路径 - 将 ChromeDriver 二进制文件的位置设置为 nightwatch.json 文件中 webdriver 对象下的位置,如下所示


"webdriver" : {
  "server_path" : "/path/to/chromedriver"
}

支持的 Chrome 功能

下表提供了所有特定于 Chrome 的所需功能的列表,这些功能都在 ChromeOptions 字典下。

名称 类型 描述
args 字符串数组 启动 Chrome 时要使用的命令行参数列表。具有关联值的参数应使用等号(“=”)分隔(例如,["start-maximized", "user-data-dir=/tmp/temp_profile"])。
binary 字符串 要使用的 Chrome 可执行文件的路径(在 Mac OS X 上,这应该是实际的二进制文件,而不仅仅是应用程序。例如,'/Applications/Google Chrome.app/Contents/MacOS/Google Chrome')
extensions 字符串数组 要在启动时安装的 Chrome 扩展列表。列表中的每个项目都应该是 base-64 编码的打包 Chrome 扩展程序(.crx)

Nightwatch 支持 ChromeDriver 提供的所有参数和功能。

查看 官方 ChromeDriver 文档 了解更多关于这些功能的信息。

您可以参考 此命令行开关列表,您可以将它们作为 args 传递给 nightwatch.json 文件中 desiredCapabilities 键下的 chromeOptions 键,如下所示


"desiredCapabilities" : {
  "browserName" : "chrome",
  "javascriptEnabled" : true,
  "acceptSslCerts" : true,
  "chromeOptions" : {
    "args" : ["start-fullscreen"]
  }
}

支持的用户首选项

除了使用 args 键设置的命令行开关之外,您还可以使用 prefs 键传递 Chrome 配置文件首选项。

以下代码片段显示了如何在 nightwatch.json 文件中设置首选项以禁用浏览器的密码管理器功能


"desiredCapabilities" : {
  "browserName" : "chrome",
  "javascriptEnabled" : true,
  "acceptSslCerts" : true,
  "chromeOptions" : {
    "prefs" : {
      "credentials_enable_service" : false,
      "profile.password_manager_enabled" : false
    }
  }
}

使用在 Docker 容器中运行的 Chrome

如果您的测试需要在 Docker 容器内运行的 Chrome 实例,请确保将 --no-sandbox 值添加到 args 对象以从 Docker 容器访问 Chrome 二进制文件。


"chromeOptions" : {
  "args" : ["--no-sandbox"]
}