跳至主要内容

功能

功能是远程接口的定义。它帮助 WebdriverIO 了解您希望在哪个浏览器或移动环境中运行测试。在本地开发测试时,功能不太重要,因为您大多数时候都在一个远程接口上运行它,但在 CI/CD 中运行大量集成测试时,功能变得更加重要。

信息

功能对象的格式由WebDriver 规范明确定义。如果用户定义的功能不符合该规范,WebdriverIO 测试运行器将尽早失败。

自定义功能

虽然固定定义的功能数量非常少,但每个人都可以提供和接受特定于自动化驱动程序或远程接口的自定义功能

浏览器特定的功能扩展

  • goog:chromeOptionsChromedriver 扩展,仅适用于 Chrome 中的测试
  • moz:firefoxOptionsGeckodriver 扩展,仅适用于 Firefox 中的测试
  • ms:edgeOptionsEdgeOptions 用于在使用 EdgeDriver 测试 Chromium Edge 时指定环境

云供应商功能扩展

自动化引擎功能扩展

WebdriverIO 功能用于管理浏览器驱动程序选项

WebdriverIO 为您管理浏览器驱动程序的安装和运行。WebdriverIO 使用自定义功能,允许您将参数传递给驱动程序。

wdio:chromedriverOptions

启动 Chromedriver 时传递的特定选项。

wdio:geckodriverOptions

启动 Geckodriver 时传递的特定选项。

wdio:edgedriverOptions

启动 Edgedriver 时传递的特定选项。

wdio:safaridriverOptions

启动 Safari 时传递的特定选项。

wdio:maxInstances

特定浏览器/功能的总并行运行工作程序的最大数量。优先于maxInstancesmaxInstancesPerCapability

类型:number

wdio:specs

定义该浏览器/功能的测试执行规范。与常规的specs 配置选项相同,但特定于浏览器/功能。优先于specs

类型:(String | String[])[]

wdio:exclude

从该浏览器/功能的测试执行中排除规范。与常规的exclude 配置选项相同,但特定于浏览器/功能。优先于exclude

类型:String[]

wdio:enforceWebDriverClassic

默认情况下,WebdriverIO 尝试建立 WebDriver Bidi 会话。如果您不希望这样做,可以设置此标志以禁用此行为。

类型:boolean

常见驱动程序选项

虽然所有驱动程序都提供不同的配置参数,但有一些 WebdriverIO 理解并用于设置驱动程序或浏览器的常用参数

cacheDir

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

类型:string
默认值:process.env.WEBDRIVER_CACHE_DIR || os.tmpdir()

binary

自定义驱动程序二进制文件的路径。如果设置,WebdriverIO 不会尝试下载驱动程序,而是使用此路径提供的驱动程序。确保驱动程序与您使用的浏览器兼容。

您可以通过CHROMEDRIVER_PATHGECKODRIVER_PATHEDGEDRIVER_PATH 环境变量提供此路径。

类型:string

注意

如果设置了驱动程序binary,WebdriverIO 不会尝试下载驱动程序,而是使用此路径提供的驱动程序。确保驱动程序与您使用的浏览器兼容。

浏览器特定的驱动程序选项

为了将选项传播到驱动程序,您可以使用以下自定义功能

  • Chrome 或 Chromium:wdio:chromedriverOptions
  • Firefox:wdio:geckodriverOptions
  • Microsoft Egde:wdio:edgedriverOptions
  • Safari:wdio:safaridriverOptions
adbPort

ADB 驱动程序应运行的端口。

示例:9515

类型:number

urlBase

命令的基本 URL 路径前缀,例如wd/url

示例:/

类型:string

logPath

将服务器日志写入文件而不是标准错误,将日志级别提高到INFO

类型:string

logLevel

设置日志级别。可能的选项ALLDEBUGINFOWARNINGSEVEREOFF

类型:string

verbose

详细记录(等效于--log-level=ALL

类型:boolean

silent

不记录任何内容(等效于--log-level=OFF

类型:boolean

appendLog

追加日志文件而不是重写。

类型:boolean

可复用

详细记录日志,并且不截断长字符串,以便日志可以被复用(实验性功能)。

类型:boolean

可读时间戳

在日志中添加可读的时间戳。

类型:boolean

启用Chrome日志

显示来自浏览器的日志(覆盖其他日志选项)。

类型:boolean

bidi映射器路径

自定义bidi映射器路径。

类型:string

允许的IP

允许连接到EdgeDriver的远程IP地址的白名单,以逗号分隔。

类型:string[]
默认值:['']

允许的来源

允许连接到EdgeDriver的请求来源的白名单,以逗号分隔。使用*允许任何主机来源非常危险!

类型:string[]
默认值:['*']

特定用例的特殊功能

这是一个示例列表,展示了为实现特定用例需要应用哪些功能。

以无头模式运行浏览器

运行无头浏览器意味着在没有窗口或UI的情况下运行浏览器实例。这主要用于没有显示器的CI/CD环境中。要以无头模式运行浏览器,请应用以下功能

{
browserName: 'chrome', // or 'chromium'
'goog:chromeOptions': {
args: ['headless', 'disable-gpu']
}
}

自动化不同的浏览器通道

如果您想测试尚未作为稳定版本发布的浏览器版本,例如Chrome Canary,您可以通过设置功能并指向您想要启动的浏览器来实现,例如

在Chrome上测试时,WebdriverIO会根据定义的browserVersion自动为您下载所需的浏览器版本和驱动程序,例如

{
browserName: 'chrome', // or 'chromium'
browserVersion: '116' // or '116.0.5845.96', 'stable', 'latest', 'dev', 'canary', 'beta'
}

如果您想测试手动下载的浏览器,可以通过以下方式提供浏览器二进制文件路径

{
browserName: 'chrome', // or 'chromium'
'goog:chromeOptions': {
binary: '/Applications/Google\ Chrome\ Canary.app/Contents/MacOS/Google\ Chrome\ Canary'
}
}

此外,如果您想使用手动下载的驱动程序,可以通过以下方式提供驱动程序二进制文件路径

{
browserName: 'chrome', // or 'chromium'
'wdio:chromedriverOptions': {
binary: '/path/to/chromdriver'
}
}

扩展自定义功能

如果您想定义自己的功能集,以便例如存储要用于该特定功能测试中的任意数据,您可以通过例如设置以下内容来实现

export const config = {
// ...
capabilities: [{
browserName: 'chrome',
'custom:caps': {
// custom configurations
}
}]
}

建议在功能命名方面遵循W3C协议,该协议需要使用:(冒号)字符,表示特定于实现的命名空间。在您的测试中,您可以通过以下方式访问您的自定义功能,例如

browser.capabilities['custom:caps']

为了确保类型安全,您可以通过以下方式扩展WebdriverIO的功能接口

declare global {
namespace WebdriverIO {
interface Capabilities {
'custom:caps': {
// ...
}
}
}
}

欢迎!我如何帮助您?

WebdriverIO AI Copilot