配置
根据设置类型(例如,使用原始协议绑定、WebdriverIO 作为独立包或 WDIO 测试运行器),可以使用不同的选项集来控制环境。
WebDriver 选项
使用webdriver
协议包时,定义以下选项
协议
与驱动程序服务器通信时使用的协议。
类型:字符串
默认值:http
主机名
驱动程序服务器的主机。
类型:字符串
默认值:0.0.0.0
端口
驱动程序服务器所在的端口。
类型:数字
默认值:未定义
路径
驱动程序服务器端点的路径。
类型:字符串
默认值:/
查询参数
传播到驱动程序服务器的查询参数。
类型:对象
默认值:未定义
用户
您的云服务用户名(仅适用于Sauce Labs、Browserstack、TestingBot 或 LambdaTest 帐户)。如果设置,WebdriverIO 将自动为您设置连接选项。如果您不使用云提供商,则可以使用此选项来验证任何其他 WebDriver 后端。
类型:字符串
默认值:未定义
密钥
您的云服务访问密钥或密钥(仅适用于Sauce Labs、Browserstack、TestingBot 或 LambdaTest 帐户)。如果设置,WebdriverIO 将自动为您设置连接选项。如果您不使用云提供商,则可以使用此选项来验证任何其他 WebDriver 后端。
类型:字符串
默认值:未定义
功能
定义您希望在 WebDriver 会话中运行的功能。有关更多详细信息,请查看WebDriver 协议。如果您运行不支持 WebDriver 协议的旧版驱动程序,则需要使用JSONWireProtocol 功能才能成功运行会话。
除了基于 WebDriver 的功能外,您还可以应用浏览器和供应商特定的选项,这些选项允许对远程浏览器或设备进行更深入的配置。这些在相应的供应商文档中进行了记录,例如:
goog:chromeOptions
:用于Google Chromemoz:firefoxOptions
:用于Mozilla Firefoxms:edgeOptions
:用于Microsoft Edgesauce:options
:用于Sauce Labsbstack:options
:用于BrowserStackselenoid:options
:用于Selenoid
此外,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_SSL
或strict_ssl
设置。
类型:布尔值
默认值:true
启用直接连接
是否启用Appium 直接连接功能。如果响应在启用该标志时没有正确的键,则它不会执行任何操作。
类型:布尔值
默认值:true
缓存目录
缓存目录根目录的路径。此目录用于存储尝试启动会话时下载的所有驱动程序。
类型:字符串
默认值:process.env.WEBDRIVER_CACHE_DIR || os.tmpdir()
WebdriverIO
以下选项(包括上面列出的选项)可以在独立的 WebdriverIO 中使用
自动化协议
WebdriverIO 正在弃用通过类似 WebDriver 的接口使用 Chrome Devtools 作为自动化协议。相反,您应该使用 webdriver
。
定义您希望用于浏览器自动化的协议。目前仅支持 webdriver
和 devtools
,因为它们是主要的浏览器自动化技术。
如果您想使用 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 帐户关联的 user
和 key
选项时才有效。
类型:字符串
默认值: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
的数字。在那里,测试不是在单个机器上测试,而是在多个虚拟机上测试。如果测试要在本地开发机器上运行,请使用更合理的数字,例如 3
、4
或 5
。从本质上讲,这是将同时启动并运行您的测试的浏览器数量,因此它取决于您的机器上有多少 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
覆盖默认快照路径。例如,将快照存储在测试文件旁边。
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 允许您设置钩子,以便在测试生命周期的特定时间触发。这允许自定义操作(例如,如果测试失败则截取屏幕截图)。
每个钩子都作为参数包含有关生命周期的特定信息(例如,有关测试套件或测试的信息)。在 我们的示例配置 中详细了解所有钩子属性。
注意:某些钩子(onPrepare
、onWorkerStart
、onWorkerEnd
和 onComplete
)在不同的进程中执行,因此无法与存在于工作进程中的其他钩子共享任何全局数据。
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
(对象
): 钩子结果(包含error
、result
、duration
、passed
、retries
属性)
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,否则为 falseresult.retries
(对象
): 有关单个测试相关重试的信息,如 Mocha 和 Jasmine 以及 Cucumber 中定义的那样,例如{ attempts: 0, limit: 0 }
,请参见result
(对象
): 钩子结果(包含error
、result
、duration
、passed
、retries
属性)
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
(字符串
): 旧会话的会话 IDnewSessionId
(字符串
): 新会话的会话 ID
beforeFeature
在 Cucumber 功能之前运行。
参数
uri
(字符串
): 功能文件的路径feature
(GherkinDocument.IFeature
): Cucumber 功能对象
afterFeature
在 Cucumber 功能之后运行。
参数
uri
(字符串
): 功能文件的路径feature
(GherkinDocument.IFeature
): Cucumber 功能对象
beforeScenario
在 Cucumber 场景之前运行。
参数
world
(ITestCaseHookParameter
): 包含有关 pickle 和测试步骤的信息的世界对象context
(对象
): Cucumber 世界对象
afterScenario
在 Cucumber 场景之后运行。
参数
world
(ITestCaseHookParameter
): 包含有关 pickle 和测试步骤的信息的世界对象result
(对象
): 包含场景结果的结果对象result.passed
(布尔值
): 如果场景通过,则为 trueresult.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
(布尔值
): 如果场景通过,则为 trueresult.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
: 断言结果