基本设置

以下是测试执行期间将传递给 Nightwatch 实例的默认设置。

名称 类型 默认 描述
src_folders 字符串 | 数组 | glob 模式 包含测试所在文件夹的数组(不包括子文件夹)。

如果未指定此选项,则测试源必须作为 测试运行器 的第二个参数内联传递。
test_settings 对象 一个对象,其中定义了所有测试环境,每个环境都根据需要覆盖测试设置。始终需要 default 环境,其他环境从该环境继承设置。

有关详细信息,请参阅 定义测试环境
webdriver 对象 包含 **WebDriver** 相关配置选项的对象。
selenium 对象 包含 **Selenium 服务器** 相关配置选项的对象。如果未使用 Selenium 服务器,则应设置 webdriver 选项。
从 Nightwatch 1.0 开始,仅在针对 Grid 设置或云测试服务(例如 SauceLabsBrowserStack)进行测试时才需要 Selenium。
custom_commands_path 字符串 | 数组 | glob 模式 将从中加载自定义命令的位置。
custom_assertions_path 字符串 | 数组 | glob 模式 将从中加载自定义断言的位置。
page_objects_path 字符串 | 数组 | glob 模式 将从中加载页面对象文件的位置。
globals_path 字符串 外部全局模块的位置,该模块将被加载并作为主客户端实例上的 globals 属性提供给测试。

全局变量也可以在 test_settings 环境中定义/覆盖。
backwards_compatibility_mode
自 v2.0 起
布尔值 false 在 Nightwatch v1.x 中,当与 await 运算符一起使用时,API 命令将返回完整的 {value: `<VALUE>`} 作为结果对象,而在 v2 中,将直接返回该值。如果使用回调,则行为保持不变。
disable_global_apis
自 v2.0 起
布尔值 false 禁用全局 API,如 "browser""element()""expect()";如果将 Nightwatch 与第三方库一起使用,则可能需要这样做。

测试运行器设置

以下设置用于控制内置 CLI 测试运行器的运行方式。

名称 类型 默认 描述
test_runner 字符串 | 对象 "default" 指定在运行测试时使用哪个测试运行器。值可以是 default(内置的 nightwatch 运行器)或 mocha

示例:"test_runner" : {"type" : "mocha", "options" : {"ui" : "tdd"}}
parallel_process_delay 整数 10 指定在并行模式下运行时,子进程启动之间的延迟(以毫秒为单位)。
enable_fail_fast
自 v2.0 起
布尔值 false 启用在发生第一个测试失败时中止测试运行执行;其余测试套件将被跳过。
test_workers 布尔值 | 对象 false 是否使用每个测试套件的测试工作器并行运行各个测试套件。如果设置为 true,则并行运行测试并自动确定工作器数量。

如果设置为对象,则可以指定工作器数量为 "auto"number

示例:"test_workers" : {"enabled" : true, "workers" : "auto"}

自 v1.3.7 起,可以使用 node_options 属性指定要传递给各个测试工作器进程的节点选项。


示例

- 这将传递所有 process.execArgv

"test_workers": {
  "enabled": true,
  "workers": "auto",
  "node_options": "inherit"
},



- 这将只传递指定的 cli 选项

"test_workers": {
  "enabled": true,
  "workers": "auto",
  "node_options": ["--inspect"]
},

unit_tests_mode 布尔值 false 控制是否在单元测试模式下运行测试,这意味着不会自动创建会话。

测试会话设置

这些设置用于微调测试会话的行为并定义在会话过程中可能可用的属性。

设置 baseUrl 属性

baseUrl(或 launchUrl)属性将提供给测试中使用的主 Nightwatch API。其值取决于使用的环境。有关测试环境的更多信息,请参见 Nightwatch 运行器 部分。

如果运行测试时指定了 integration 环境(使用 --env integration),则 baseUrl 将根据配置设置为 http://staging.host。否则,它将具有在 default 环境中定义的值(即 https://127.0.0.1)。

module.exports = {
  'Demo test' : function (browser) {
    browser
      .url(browser.baseUrl)
      // ...
      .end();
  }
};
名称 类型 默认 描述
baseUrl 字符串 一个 URL,可以在以后的测试中用作要加载的主 URL。如果测试将在不同的环境中运行,每个环境都有不同的 URL,这将非常有用。

别名:base_urllaunch_urllaunchUrl
desiredCapabilities
别名:capabilities
对象 | 函数 | Selenium 功能 创建新会话时的 WebDriver 功能。例如,可以指定浏览器名称以及其他功能。
示例

"desiredCapabilities" : {
  "browserName" : "firefox",
  "acceptInsecureCerts" : true
}

您可以查看 此处 的完整功能列表。

自 v2.0 起,还可以指定 Selenium 功能 对象。示例
const firefox = require('selenium-webdriver/firefox');

const options = new firefox.Options() .addExtensions('../../../path/to/extension.xpi');
module.exports = { src_folders: ['tests'], test_settings: { default: { browserName: 'firefox', desiredCapabilities: options } } };

或者作为函数
module.exports = {
  src_folders: ['tests'],
  test_settings: {
    default: {
      browserName: 'firefox',
      desiredCapabilities() {
        const firefox = require('selenium-webdriver/firefox');
        
const options = new firefox.Options() .addExtensions('../../../path/to/extension.xpi');
return options; } } } };
screenshots 对象 Selenium 在命令错误发生时生成屏幕截图。将 on_failure 设置为 true 后,还会为失败或出错的测试生成屏幕截图。这些文件保存在磁盘上。

自 `v0.7.5` 起,您可以通过将 `"on_error"` 设置为 `false` 来禁用命令错误的屏幕截图。

示例

"screenshots" : {
  "enabled" : true,
  "on_failure" : true,
  "on_error" : false,
  "path" : ""
}
globals 对象 一个对象,该对象将在测试中可用,并且可以按环境覆盖。示例

"globals" : {
  "myGlobal" : "some_global"
}



全局变量也可以在外部文件中定义。有关 外部全局变量 的更多信息。

persist_globals 布尔值 false 如果要保留测试套件运行之间的相同全局变量对象或在每个测试套件之间保留其(深层)副本,请将其设置为 true
start_session 布尔值 true 是否自动启动 WebDriver 会话。当运行不与 Webdriver 服务器交互的单元/集成测试时,这通常设置为 false
end_session_on_fail 布尔值 true 在测试终止时(通常是在断言失败后)自动结束会话。
skip_testcases_on_fail 布尔值 true 当一个测试用例失败时,跳过来自同一个测试套件(即测试文件)的剩余测试用例(或测试步骤)。
use_xpath 布尔值 false 使用 xpath 作为默认定位器策略
use_ssl 布尔值 false 如果通过 https 连接到远程 Grid 服务器,则设置为 true。另外,请勿忘记将 port 设置为 443。
sync_test_names
布尔值 true 启用此选项后,将在 desiredCapabilities 中添加一个 name 属性,其中包含测试套件名称。这在使用云测试服务时很有用。
persist_globals 布尔值 false 如果要保留测试套件运行之间的相同全局变量对象或在每个测试套件之间保留其(深层)副本,请将其设置为 true
selenium_host
已弃用 - 使用 selenium.host
字符串 localhost Selenium 服务器接受连接的主机名/IP。
selenium_port
已弃用 - 使用 selenium.port
整数 4444 Selenium 服务器接受连接的端口号。

过滤设置

以下设置可用于定义过滤测试文件的方式。

名称 类型 默认 描述
exclude array 要跳过的文件夹或文件模式数组(相对于主源文件夹)。
示例

"exclude" : ["excluded-folder"]

"exclude" : ["test-folder/\*-smoke.js"]
filter 字符串 加载测试时要使用的文件夹或文件模式。与该模式不匹配的文件将被忽略。
示例

"filter" : "tests/\*-smoke.js"
skipgroup
字符串 跳过一组测试(子文件夹);可以是逗号分隔值的列表(无空格)。
skiptags
字符串 按标签名称跳过测试;可以是逗号分隔值的列表(无空格)。

输出设置

以下设置可用于控制运行测试时的输出和日志记录。

名称 类型 默认 描述
output_folder 字符串 tests_output 保存 JUnit XML 报告文件的路径。
disable_colors 布尔值 false 控制是否全局禁用 CLI 输出的颜色。
live_output 布尔值 false 此选项仅在并行运行测试时有用。控制是否缓冲输出。
silent 布尔值 true 是否显示来自 WebDriver 或 Selenium 服务器的扩展 HTTP 流量命令日志。
output 布尔值 true 用于完全禁用 CLI 输出。
detailed_output 布尔值 true 默认情况下,在测试运行时会显示详细的断言输出。如果只想看到显示的测试用例名称和通过/失败状态,则将其设置为 false。并行运行测试时,默认情况下会禁用详细输出。
disable_error_log 布尔值 false 如果不想在测试执行期间显示错误(它们始终在最后显示),则将其设置为 true。
output_timestamp 布尔值 false 如果要在日志输出旁边看到时间戳,则将其设置为 true。
log_screenshot_data 布尔值 false 用于在截取屏幕截图时在(详细)日志中显示 Base64 图像数据。

WebDriver 设置

以下是 Webdriver 服务的一些选项。Nightwatch 可以自动启动和停止 Webdriver 进程,这非常方便,因为您不必自己管理它,只需专注于测试。

如果要启用此功能,请将 start_process 设置为 true 并指定 server_path 中二进制文件的位置。

名称 类型 默认 描述
start_process 布尔值 false 启用此功能后,Webdriver 服务器将在后台的 子进程 中运行,并自动启动/停止。
Nightwatch 包括对管理 Chromedriver、Geckodriver(Firefox)、Safaridriver 和 Selenium Server 的支持。
server_path 字符串 仅在 start_process 启用时有用。
host 字符串 仅在 Webdriver 服务在另一台机器上运行时才需要。
port 整数 Webdriver 服务将监听的端口号,或者 Nightwatch 将尝试连接的端口号。
ssl 布尔值 如果通过 HTTPS 连接到远程(云)服务,则应将其设置为 true。另外,不要忘记将端口设置为 443。
log_path string|boolean 放置 Webdriver 服务日志文件 output.log 文件的位置。默认为当前目录。
要禁用 Webdriver 日志记录,请将其设置为 false
log_file_name string|none 默认情况下,日志文件名将与测试套件文件名相同,但也可以指定不同的文件名。
cli_args 对象 要传递给 Webdriver 进程的 CLI 参数列表。这因每个 Webdriver 实现而异。
keep_alive 布尔值 | 对象 false 启用 HTTP Keep-Alive。如果设置为 true,则使用默认设置启用 keepAlive 选项 (keepAliveMsecs = 3000)。
如果设置为对象,可以指定 keepAliveMsecs 值。

示例:"keep_alive" : {"enabled" : true, "keepAliveMsecs" : 2000}
timeout_options 对象 timeout: 60000
retry_attempts: 0
对 Webdriver 服务的请求将在 timeout 毫秒内超时;将重试 retry_attempts 次。

示例
{timeout: 15000, retry_attempts: 5}
status_poll_interval
自 v1.2.2 起
整数 100 在检查 Webdriver 服务器是否已启动并正在运行时,状态 ping 检查之间要使用的间隔(以毫秒为单位)。
max_status_poll_tries
自 v1.2.2 起
整数 5 在返回超时错误之前,检查 Webdriver 服务器是否已启动并正在运行时的 ping 状态检查尝试次数。
process_create_timeout
自 v1.2.2 起
整数 120000 等待 Node.js 进程创建并运行的总时间(以毫秒为单位)(默认为 2 分钟),包括生成子进程和检查状态。
username 字符串 通常仅在云测试 Selenium 服务时才需要。如果服务器需要凭据,则此用户名将用于计算 Authorization 标头。

该值也可以是环境变量,在这种情况下,它将如下所示
"username" : "${SAUCE_USERNAME}"
access_key 字符串 此字段将与 username 一起用于计算 Authorization 标头。

username 一样,该值也可以是环境变量
"access_key" : "${SAUCE_ACCESS_KEY}"
proxy 字符串 将请求代理到 Webdriver(或 Selenium)服务。接受 http、https、socks(v5)、socks5、sock4 和 pac。
使用 proxy-agent,该代理需要作为 NPM 中的单独包安装。

示例:http://user:pass@host:port
default_path_prefix 字符串 有时在使用 Selenium Server 时需要。要添加到所有请求的 (e.g. /wd/hub) 前缀。

Selenium Server 设置

如果使用 Selenium Server,则连接相关的设置应放在 "selenium"" 下。如果 webdriverselenium 字典都存在,则 selenium 选项将与 webdriver 选项合并。

配置与基于云的测试提供商(如 BrowserStackSauceLabsCrossBrowserTestingLambdaTestTestingBot)的连接时,也应使用 "selenium" 设置。

名称 类型 默认 描述
start_process 布尔值 false 是否自动管理 Selenium 进程。
server_path 字符串 Selenium jar 文件的位置。如果 start_process 已启用,则需要指定此位置。
例如:bin/selenium-server-standalone-2.43.0.jar
log_path string|boolean 放置 Selenium output.log 文件的位置。默认为当前目录。
要禁用 Selenium 日志记录,请将其设置为 false
version2 布尔值 false 如果需要使用旧版 Selenium Server 2,则将其设置为 true
port 整数 4444 Selenium 将监听的端口号,或者 Nighwatch 将尝试连接的端口号。
cli_args 对象 要传递给 Selenium 进程的 CLI 参数列表。在这里,您可以为浏览器驱动程序设置各种选项,例如

  • webdriver.firefox.profile:Selenium 默认情况下会为每个会话创建一个新的 Firefox 配置文件。如果要使用现有的 Firefox 配置文件,可以在这里指定其名称。
    此处提供 Firefox 驱动程序参数的完整列表 here.
  • webdriver.chrome.driver:Nightwatch 也可以使用 Chrome 浏览器运行测试。要启用此功能,您必须下载 ChromeDriver 二进制文件 并在此处指定其位置。另外,不要忘记在 desiredCapabilities 对象中指定 chrome 作为浏览器名称。
    您可以在 ChromeDriver 网站 上找到更多信息。
  • webdriver.ie.driver:Nightwatch 也适用于 Internet Explorer。要启用此功能,您必须下载 IE 驱动程序二进制文件 并在此处指定其位置。

    或者,您可以从 NPM 安装包 iedriver

    另外,您需要在 desiredCapabilities 对象中指定 "internet explorer" 作为浏览器名称。

Selenium 示例配置

以下是在 nightwatch.conf.js 中使用本地 Selenium Server 并支持 Firefox、Chrome 和 Internet Explorer 的示例配置。

假定在当前项目中安装了以下 NPM

module.exports = {
  src_folders: [],
  
test_settings: { default: { launch_url: 'https://nightwatch.node.org.cn' },
selenium: { // Selenium Server is running locally and is managed by Nightwatch selenium: { start_process: true, port: 4444, server_path: require('selenium-server').path, cli_args: { 'webdriver.gecko.driver': require('geckodriver').path, 'webdriver.chrome.driver': require('chromedriver').path, 'webdriver.ie.driver': process.platform === 'win32' ? require('iedriver').path : '' } }, webdriver: { start_process: false } },
'selenium.chrome': { extends: 'selenium', desiredCapabilities: { browserName: 'chrome', chromeOptions: { } } },
'selenium.firefox': { extends: 'selenium', desiredCapabilities: { browserName: 'firefox' } },
'selenium.ie': { extends: 'selenium', desiredCapabilities: { browserName: 'internet explorer' } } } }

BrowserStack 示例配置

Browserstack 是最流行的云测试平台之一。在 Nightwatch 中使用它非常简单,在自动生成的 nightwatch.conf.js 文件中存在配置。

拥有帐户后,您需要设置以下环境变量。Nightwatch 也支持 Dotenv 文件。

  • BROWSERSTACK_USER
  • BROWSERSTACK_KEY

请记住,还要启用 HTTP keepalive 以提高网络性能。

module.exports = {
  src_folders: [],
  
webdriver: { keep_alive: true, timeout_options: { timeout: 60000, retry_attempts: 3 } }
test_settings: { default: { launch_url: 'https://nightwatch.node.org.cn' },
browserstack: { selenium: { host: 'hub-cloud.browserstack.com', port: 443 },
// More info on configuring capabilities can be found on: // https://www.browserstack.com/automate/capabilities?tag=selenium-4 desiredCapabilities: { 'bstack:options' : { local: 'false', userName: '${BROWSERSTACK_USER}', accessKey: '${BROWSERSTACK_KEY}', } } },
'browserstack.chrome': { extends: 'browserstack', desiredCapabilities: { browserName: 'chrome', chromeOptions : { } } },
'browserstack.firefox': { extends: 'browserstack', desiredCapabilities: { browserName: 'firefox' } },
'browserstack.ie': { extends: 'browserstack', desiredCapabilities: { browserName: 'IE', browserVersion: '11.0', 'bstack:options' : { os: 'Windows', osVersion: '10', local: 'false', seleniumVersion: '3.5.2', resolution: '1366x768' } } } } }