跳至主要内容

配置

根据设置类型(例如,使用原始协议绑定、WebdriverIO 作为独立包或 WDIO 测试运行器),可以使用不同的选项集来控制环境。

WebDriver 选项

使用webdriver 协议包时,定义以下选项

协议

与驱动程序服务器通信时使用的协议。

类型:字符串
默认值:http

主机名

驱动程序服务器的主机。

类型:字符串
默认值:0.0.0.0

端口

驱动程序服务器所在的端口。

类型:数字
默认值:未定义

路径

驱动程序服务器端点的路径。

类型:字符串
默认值:/

查询参数

传播到驱动程序服务器的查询参数。

类型:对象
默认值:未定义

用户

您的云服务用户名(仅适用于Sauce LabsBrowserstackTestingBotLambdaTest 帐户)。如果设置,WebdriverIO 将自动为您设置连接选项。如果您不使用云提供商,则可以使用此选项来验证任何其他 WebDriver 后端。

类型:字符串
默认值:未定义

密钥

您的云服务访问密钥或密钥(仅适用于Sauce LabsBrowserstackTestingBotLambdaTest 帐户)。如果设置,WebdriverIO 将自动为您设置连接选项。如果您不使用云提供商,则可以使用此选项来验证任何其他 WebDriver 后端。

类型:字符串
默认值:未定义

功能

定义您希望在 WebDriver 会话中运行的功能。有关更多详细信息,请查看WebDriver 协议。如果您运行不支持 WebDriver 协议的旧版驱动程序,则需要使用JSONWireProtocol 功能才能成功运行会话。

除了基于 WebDriver 的功能外,您还可以应用浏览器和供应商特定的选项,这些选项允许对远程浏览器或设备进行更深入的配置。这些在相应的供应商文档中进行了记录,例如:

此外,Sauce Labs 的自动化测试配置器是一个有用的实用程序,它可以帮助您通过组合所需的配置来创建此对象。

类型:对象
默认值:null

示例

{
browserName: 'chrome', // options: `chrome`, `edge`, `firefox`, `safari`
browserVersion: '27.0', // browser version
platformName: 'Windows 10' // OS platform
}

如果您在移动设备上运行 Web 或原生测试,则功能与 WebDriver 协议不同。有关更多详细信息,请参阅Appium 文档

日志级别

日志详细程度的级别。

类型:字符串
默认值:info
选项:trace | debug | info | warn | error | silent

输出目录

存储所有测试运行器日志文件(包括报告器日志和wdio 日志)的目录。如果未设置,则所有日志都将流式传输到stdout。由于大多数报告器都设置为记录到stdout,因此建议仅对某些特定报告器使用此选项,在这些报告器中将报告推送到文件更有意义(例如,junit 报告器)。

在独立模式下运行时,WebdriverIO 生成的唯一日志将是wdio 日志。

类型:字符串
默认值:null

连接重试超时

对驱动程序或网格的任何 WebDriver 请求的超时。

类型:数字
默认值:120000

连接重试次数

对 Selenium 服务器的最大请求重试次数。

类型:数字
默认值:3

代理

允许您使用自定义http/https/http2代理来发出请求。

类型:对象
默认值

{
http: new http.Agent({ keepAlive: true }),
https: new https.Agent({ keepAlive: true })
}

标头

指定要传递到每个 WebDriver 请求中的自定义标头。如果您的 Selenium 网格需要基本身份验证,我们建议通过此选项传递Authorization 标头以验证您的 WebDriver 请求,例如:

import { Buffer } from 'buffer';
// Read the username and password from environment variables
const username = process.env.SELENIUM_GRID_USERNAME;
const password = process.env.SELENIUM_GRID_PASSWORD;

// Combine the username and password with a colon separator
const credentials = `${username}:${password}`;
// Encode the credentials using Base64
const encodedCredentials = Buffer.from(credentials).toString('base64');

export const config: WebdriverIO.Config = {
// ...
headers: {
Authorization: `Basic ${encodedCredentials}`
}
// ...
}

类型:对象
默认值:{}

转换请求

在发出 WebDriver 请求之前拦截HTTP 请求选项的功能

类型:(RequestOptions) => RequestOptions
默认值:

转换响应

在 WebDriver 响应到达后拦截 HTTP 响应对象的函数。该函数将原始响应对象作为第一个参数,相应的RequestOptions 作为第二个参数传递。

类型:(Response, RequestOptions) => Response
默认值:

严格SSL

是否不需要 SSL 证书有效。可以通过环境变量STRICT_SSLstrict_ssl 设置。

类型:布尔值
默认值:true

启用直接连接

是否启用Appium 直接连接功能。如果响应在启用该标志时没有正确的键,则它不会执行任何操作。

类型:布尔值
默认值:true

缓存目录

缓存目录根目录的路径。此目录用于存储尝试启动会话时下载的所有驱动程序。

类型:字符串
默认值:process.env.WEBDRIVER_CACHE_DIR || os.tmpdir()


WebdriverIO

以下选项(包括上面列出的选项)可以在独立的 WebdriverIO 中使用

自动化协议

弃用

WebdriverIO 正在弃用通过类似 WebDriver 的接口使用 Chrome Devtools 作为自动化协议。相反,您应该使用 webdriver

定义您希望用于浏览器自动化的协议。目前仅支持 webdriverdevtools,因为它们是主要的浏览器自动化技术。

如果您想使用 devtools 自动化浏览器,请确保已安装 NPM 包($ npm install --save-dev devtools)。

类型:字符串
默认值:webdriver

baseUrl

通过设置基本 URL 来缩短 url 命令调用。

  • 如果您的 url 参数以 / 开头,则会添加 baseUrl(除非 baseUrl 有路径)。
  • 如果您的 url 参数没有以方案或 / 开头(例如 some/path),则会直接添加完整的 baseUrl

类型:字符串
默认值:null

waitforTimeout

所有 waitFor* 命令的默认超时时间。(请注意选项名称中的小写 f)。此超时时间**仅**影响以 waitFor* 开头的命令及其默认等待时间。

要增加测试的超时时间,请参阅框架文档。

类型:数字
默认值:5000

waitforInterval

所有 waitFor* 命令检查预期状态(例如,可见性)是否已更改的默认间隔。

类型:数字
默认值:500

region

如果在 Sauce Labs 上运行,您可以选择在不同的数据中心之间运行测试:美国或欧盟。要将您的区域更改为欧盟,请在您的配置中添加 region: 'eu'

注意:这仅在您提供与您的 Sauce Labs 帐户关联的 userkey 选项时才有效。

类型:字符串
默认值:us

(仅适用于虚拟机和/或模拟器/仿真器)


Testrunner 选项

以下选项(包括上面列出的选项)仅在使用 WDIO testrunner 运行 WebdriverIO 时定义。

specs

定义测试执行的规范。您可以指定一个 glob 模式来一次匹配多个文件,或者将 glob 或路径集包装到数组中以在单个工作进程中运行它们。所有路径都视为相对于配置文件路径。

类型:(String | String[])[]
默认值:[]

exclude

从测试执行中排除规范。所有路径都视为相对于配置文件路径。

类型:String[]
默认值:[]

suites

一个描述各种套件的对象,然后您可以使用 wdio CLI 上的 --suite 选项指定它们。

类型:对象
默认值:{}

capabilities

与上面描述的 capabilities 部分相同,除了可以选择指定 multiremote 对象,或在数组中指定多个 WebDriver 会话以进行并行执行。

您可以应用与上面定义的相同的供应商和浏览器特定功能。

类型:Object|Object[]
默认值:[{ maxInstances: 5, browserName: 'firefox' }]

maxInstances

最大并行运行工作进程总数。

注意:当测试在某些外部供应商(例如 Sauce Labs 的机器)上执行时,它可能是一个高达 100 的数字。在那里,测试不是在单个机器上测试,而是在多个虚拟机上测试。如果测试要在本地开发机器上运行,请使用更合理的数字,例如 345。从本质上讲,这是将同时启动并运行您的测试的浏览器数量,因此它取决于您的机器上有多少 RAM 以及您的机器上运行了多少其他应用程序。

类型:数字
默认值:100

maxInstancesPerCapability

每个功能的最大并行运行工作进程总数。

类型:数字
默认值:100

injectGlobals

将 WebdriverIO 的全局变量(例如 browser$$$)插入全局环境。如果您设置为 false,则应从 @wdio/globals 导入,例如

import { browser, $, $$, expect } from '@wdio/globals'

注意:WebdriverIO 不处理测试框架特定全局变量的注入。

类型:布尔值
默认值:true

bail

如果您希望测试运行在特定数量的测试失败后停止,请使用 bail。(它默认为 0,无论如何都会运行所有测试。)注意:在此上下文中,测试是在单个规范文件中(当使用 Mocha 或 Jasmine 时)的所有测试,或者是在特征文件中(当使用 Cucumber 时)的所有步骤。如果您想控制单个测试文件中的测试的 bail 行为,请查看可用的 框架 选项。

类型:数字
默认值:0(不退出;运行所有测试)

specFileRetries

当整个规范文件失败时重试整个规范文件的次数。

类型:数字
默认值:0

specFileRetriesDelay

规范文件重试尝试之间延迟的秒数。

类型:数字
默认值:0

specFileRetriesDeferred

重试的规范文件是否应立即重试或延迟到队列的末尾。

类型:布尔值
默认值:true

groupLogsByTestSpec

选择日志输出视图。

如果设置为 false,则来自不同测试文件的日志将实时打印。请注意,这可能导致在并行运行时来自不同文件的日志输出混合。

如果设置为 true,则日志输出将按测试规范分组,并且仅在测试规范完成后打印。

默认情况下,它设置为 false,因此日志会实时打印。

类型:布尔值
默认值:false

services

服务接管您不想处理的特定工作。它们几乎无需任何努力即可增强您的测试设置。

类型:String[]|Object[]
默认值:[]

framework

定义 WDIO testrunner 要使用的测试框架。

类型:字符串
默认值:mocha
选项:mocha | jasmine

mochaOpts、jasmineOpts 和 cucumberOpts

特定于框架的选项。请参阅框架适配器文档以了解哪些选项可用。在 框架 中了解更多信息。

类型:对象
默认值:{ timeout: 10000 }

cucumberFeaturesWithLineNumbers

带有行号的黄瓜功能列表(当使用黄瓜框架时)。

类型:String[] 默认值:[]

reporters

要使用的报告程序列表。报告程序可以是字符串,也可以是 ['reporterName', { /* reporter options */}] 的数组,其中第一个元素是带有报告程序名称的字符串,第二个元素是带有报告程序选项的对象。

类型:String[]|Object[]
默认值:[]

示例

reporters: [
'dot',
'spec'
['junit', {
outputDir: `${__dirname}/reports`,
otherOption: 'foobar'
}]
]

reporterSyncInterval

确定如果报告程序异步报告其日志(例如,如果日志流式传输到第三方供应商),则报告程序应以哪个间隔检查它们是否已同步。

类型:数字
默认值:100(毫秒)

reporterSyncTimeout

确定报告程序在抛出 testrunner 错误之前完成上传所有日志的最长时间。

类型:数字
默认值:5000(毫秒)

execArgv

启动子进程时要指定的节点参数。

类型:String[]
默认值:null

filesToWatch

支持 glob 的字符串模式列表,告诉 testrunner 在使用 --watch 标志运行时额外监视其他文件(例如应用程序文件)。默认情况下,testrunner 已经监视所有规范文件。

类型:String[]
默认值:[]

updateSnapshots

如果要更新快照,请设置为 true。理想情况下,用作 CLI 参数的一部分,例如 wdio run wdio.conf.js --s

类型:'new' | 'all' | 'none'
默认值:如果未提供且测试在 CI 中运行,则为 none,如果未提供,则为 new,否则为已提供的。

resolveSnapshotPath

覆盖默认快照路径。例如,将快照存储在测试文件旁边。

wdio.conf.ts
export const config: WebdriverIO.Config = {
resolveSnapshotPath: (testPath, snapExtension) => testPath + snapExtension,
}

类型:(testPath: string, snapExtension: string) => string
默认值:将快照文件存储在测试文件旁边的 __snapshots__ 目录中。

tsConfigPath

WDIO 使用 tsx 编译 TypeScript 文件。您的 TSConfig 会自动从当前工作目录中检测到,但您可以在此处或通过设置 TSX_TSCONFIG_PATH 环境变量来指定自定义路径。

请参阅 tsx 文档:https://tsx.is/usage#custom-tsconfig-json-path

类型:字符串
默认值:null

Hooks

WDIO testrunner 允许您设置钩子,以便在测试生命周期的特定时间触发。这允许自定义操作(例如,如果测试失败则截取屏幕截图)。

每个钩子都作为参数包含有关生命周期的特定信息(例如,有关测试套件或测试的信息)。在 我们的示例配置 中详细了解所有钩子属性。

注意:某些钩子(onPrepareonWorkerStartonWorkerEndonComplete)在不同的进程中执行,因此无法与存在于工作进程中的其他钩子共享任何全局数据。

onPrepare

在所有工作进程启动之前执行一次。

参数

  • config (对象): WebdriverIO 配置对象
  • param (object[]): 功能详情列表

onWorkerStart

在生成工作进程之前执行,可用于为该工作进程初始化特定服务,以及以异步方式修改运行时环境。

参数

  • cid (字符串): 功能 ID(例如 0-0)
  • caps (对象): 包含将在工作进程中生成的会话的功能
  • specs (字符串[]): 将在工作进程中运行的规范文件
  • args (对象): 初始化工作进程后将与主配置合并的对象
  • execArgv (字符串[]): 传递给工作进程的字符串参数列表

onWorkerEnd

工作进程退出后立即执行。

参数

  • cid (字符串): 功能 ID(例如 0-0)
  • exitCode (数字): 0 - 成功,1 - 失败
  • specs (字符串[]): 将在工作进程中运行的规范文件
  • retries (数字): 根据 "为每个规范文件添加重试" 定义的规范级重试次数

beforeSession

在初始化 webdriver 会话和测试框架之前执行。它允许您根据功能或规范操作配置。

参数

  • config (对象): WebdriverIO 配置对象
  • caps (对象): 包含将在工作进程中生成的会话的功能
  • specs (字符串[]): 将在工作进程中运行的规范文件

before

在测试执行开始之前执行。此时您可以访问所有全局变量,例如 browser。它是定义自定义命令的理想位置。

参数

  • caps (对象): 包含将在工作进程中生成的会话的功能
  • specs (字符串[]): 将在工作进程中运行的规范文件
  • browser (对象): 创建的浏览器/设备会话实例

beforeSuite

在套件开始之前执行的钩子(仅限 Mocha/Jasmine)

参数

  • suite (对象): 套件详情

beforeHook

在套件内钩子开始之前执行的钩子(例如,在 Mocha 中调用 beforeEach 之前运行)

参数

  • test (对象): 测试详情
  • context (对象): 测试上下文(在 Cucumber 中表示 World 对象)

afterHook

在套件内钩子结束之后执行的钩子(例如,在 Mocha 中调用 afterEach 之后运行)

参数

  • test (对象): 测试详情
  • context (对象): 测试上下文(在 Cucumber 中表示 World 对象)
  • result (对象): 钩子结果(包含 errorresultdurationpassedretries 属性)

beforeTest

在测试之前执行的功能(仅限 Mocha/Jasmine)。

参数

  • test (对象): 测试详情
  • context (对象): 执行测试的范围对象

beforeCommand

在执行 WebdriverIO 命令之前运行。

参数

  • commandName (字符串): 命令名称
  • args (*): 命令将接收的参数

afterCommand

在执行 WebdriverIO 命令之后运行。

参数

  • commandName (字符串): 命令名称
  • args (*): 命令将接收的参数
  • result (数字): 0 - 命令成功,1 - 命令错误
  • error (错误): 任何错误对象

afterTest

在测试(在 Mocha/Jasmine 中)结束后执行的功能。

参数

  • test (对象): 测试详情
  • context (对象): 执行测试的范围对象
  • result.error (错误): 如果测试失败,则为错误对象,否则为 undefined
  • result.result (任意): 测试函数的返回值对象
  • result.duration (数字): 测试持续时间
  • result.passed (布尔值): 如果测试通过,则为 true,否则为 false
  • result.retries (对象): 有关单个测试相关重试的信息,如 Mocha 和 Jasmine 以及 Cucumber 中定义的那样,例如 { attempts: 0, limit: 0 },请参见
  • result (对象): 钩子结果(包含 errorresultdurationpassedretries 属性)

afterSuite

在套件结束后执行的钩子(仅限 Mocha/Jasmine)

参数

  • suite (对象): 套件详情

after

所有测试完成后执行。您仍然可以访问测试中的所有全局变量。

参数

  • result (数字): 0 - 测试通过,1 - 测试失败
  • caps (对象): 包含将在工作进程中生成的会话的功能
  • specs (字符串[]): 将在工作进程中运行的规范文件

afterSession

在终止 webdriver 会话后立即执行。

参数

  • config (对象): WebdriverIO 配置对象
  • caps (对象): 包含将在工作进程中生成的会话的功能
  • specs (字符串[]): 将在工作进程中运行的规范文件

onComplete

所有工作进程关闭且进程即将退出后执行。在 onComplete 钩子中抛出的错误将导致测试运行失败。

参数

  • exitCode (数字): 0 - 成功,1 - 失败
  • config (对象): WebdriverIO 配置对象
  • caps (对象): 包含将在工作进程中生成的会话的功能
  • result (对象): 包含测试结果的结果对象

onReload

刷新时执行。

参数

  • oldSessionId (字符串): 旧会话的会话 ID
  • newSessionId (字符串): 新会话的会话 ID

beforeFeature

在 Cucumber 功能之前运行。

参数

afterFeature

在 Cucumber 功能之后运行。

参数

beforeScenario

在 Cucumber 场景之前运行。

参数

  • world (ITestCaseHookParameter): 包含有关 pickle 和测试步骤的信息的世界对象
  • context (对象): Cucumber 世界对象

afterScenario

在 Cucumber 场景之后运行。

参数

  • world (ITestCaseHookParameter): 包含有关 pickle 和测试步骤的信息的世界对象
  • result (对象): 包含场景结果的结果对象
  • result.passed (布尔值): 如果场景通过,则为 true
  • result.error (字符串): 如果场景失败,则为错误堆栈
  • result.duration (数字): 场景持续时间(毫秒)
  • context (对象): Cucumber 世界对象

beforeStep

在 Cucumber 步骤之前运行。

参数

  • step (Pickle.IPickleStep): Cucumber 步骤对象
  • scenario (IPickle): Cucumber 场景对象
  • context (对象): Cucumber 世界对象

afterStep

在 Cucumber 步骤之后运行。

参数

  • step (Pickle.IPickleStep): Cucumber 步骤对象
  • scenario (IPickle): Cucumber 场景对象
  • result: (对象): 包含步骤结果的结果对象
  • result.passed (布尔值): 如果场景通过,则为 true
  • result.error (字符串): 如果场景失败,则为错误堆栈
  • result.duration (数字): 场景持续时间(毫秒)
  • context (对象): Cucumber 世界对象

beforeAssertion

在 WebdriverIO 断言发生之前执行的钩子。

参数

  • params: 断言信息
  • params.matcherName (字符串): 匹配器的名称(例如 toHaveTitle
  • params.expectedValue: 传递给匹配器的值
  • params.options: 断言选项

afterAssertion

在 WebdriverIO 断言发生后执行的钩子。

参数

  • params: 断言信息
  • params.matcherName (字符串): 匹配器的名称(例如 toHaveTitle
  • params.expectedValue: 传递给匹配器的值
  • params.options: 断言选项
  • params.result: 断言结果

欢迎!我怎样才能帮助您?

WebdriverIO AI Copilot