配置
根据设置类型(例如使用原始协议绑定、作为独立包的WebdriverIO或WDIO测试运行器),有不同的选项可用于控制环境。
WebDriver 选项
使用webdriver协议包时,定义了以下选项:
protocol
与驱动程序服务器通信时使用的协议。
类型:String
默认值:http
hostname
驱动程序服务器的主机。
类型:String
默认值:0.0.0.0
port
驱动程序服务器的端口。
类型:Number
默认值:undefined
path
驱动程序服务器端点的路径。
类型:String
默认值:/
queryParams
传播到驱动程序服务器的查询参数。
类型:Object
默认值:undefined
user
您的云服务用户名(仅适用于Sauce Labs、Browserstack、TestingBot或TestMu AI账户)。如果设置,WebdriverIO将自动为您设置连接选项。如果不使用云提供商,可以用于验证任何其他WebDriver后端。
类型:String
默认值:undefined
key
您的云服务访问密钥或密钥(仅适用于Sauce Labs、Browserstack、TestingBot或TestMu AI账户)。如果设置,WebdriverIO将自动为您设置连接选项。如果不使用云提供商,可以用于验证任何其他WebDriver后端。
类型:String
默认值:undefined
capabilities
定义您要在WebDriver会话中运行的功能。查看WebDriver协议了解更多详情。如果您运行的是不支持WebDriver协议的旧驱动程序,则需要使用JSONWireProtocol功能才能成功运行会话。
除了基于WebDriver的功能外,您还可以应用浏览器和供应商特定的选项,这些选项允许对远程浏览器或设备进行更深入的配置。这些在相应的供应商文档中有记载,例如:
goog:chromeOptions:用于Google Chromemoz:firefoxOptions:用于Mozilla Firefoxms:edgeOptions:用于Microsoft Edgesauce:options:用于Sauce Labsbstack:options:用于BrowserStackselenoid:options:用于Selenoid
此外,Sauce Labs的自动测试配置器是一个有用的工具,可以通过点击组合您所需的功能来帮助您创建此对象。
类型:Object
默认值:null
示例:
{
browserName: 'chrome', // 选项: `chrome`, `edge`, `firefox`, `safari`
browserVersion: '27.0', // 浏览器版本
platformName: 'Windows 10' // 操作系统平台
}
如果您在移动设备上运行网页或原生测试,capabilities与WebDriver协议不同。有关更多详细信息,请参阅Appium文档。
logLevel
日志记录的详细级别。
类型:String
默认值:info
选项:trace | debug | info | warn | error | silent
outputDir
存储所有测试运行器日志文件(包括报告器日志和wdio日志)的目录。如果未设置,所有日志都将流式传输到stdout。由于大多数报告器都是为了记录到stdout而设计的,因此建议仅对特定报告器使用此选项,在这些情况下,将报告推送到文件中更有意义(例如junit报告器)。
在独立模式下运行时,WebdriverIO生成的唯一日志将是wdio日志。
类型:String
默认值:null
connectionRetryTimeout
对驱动程序或网格的任 何WebDriver请求的超时时间。
类型:Number
默认值:120000
connectionRetryCount
对Selenium服务器的请求重试的最大次数。
类型:Number
默认值:3
agent
允许您使用自定义的http/https/http2 agent来发出请求。
类型:Object
默认值:
{
http: new http.Agent({ keepAlive: true }),
https: new https.Agent({ keepAlive: true })
}
headers
指定要传递到每个WebDriver请求的自定义headers。如果您的Selenium Grid需要基本认证,我们建议通过此选项传入Authorization标头来验证您的WebDriver请求,例如:
import { Buffer } from 'buffer';
// 从环境变量读取用户名和密码
const username = process.env.SELENIUM_GRID_USERNAME;
const password = process.env.SELENIUM_GRID_PASSWORD;
// 用冒号分隔符组合用户名和密码
const credentials = `${username}:${password}`;
// 使用Base64编码凭据
const encodedCredentials = Buffer.from(credentials).toString('base64');
export const config: WebdriverIO.Config = {
// ...
headers: {
Authorization: `Basic ${encodedCredentials}`
}
// ...
}
类型:Object
默认值:{}
transformRequest
在发出WebDriver请求之前拦截HTTP请求选项的函数
类型:(RequestOptions) => RequestOptions
默认值:无
transformResponse
在WebDriver响应到达后拦截HTTP响应对象的函数。该函数将原始响应对象作为第一个参数,相应的RequestOptions作为第二个参数传递。
类型:(Response, RequestOptions) => Response
默认值:无
strictSSL
是否不要求SSL证书有效。
可以通过环境变量STRICT_SSL或strict_ssl设置。
类型:Boolean
默认值:true
enableDirectConnect
是否启用Appium直连功能。 如果响应在启用标志的情况下没有适当的键,则不执行任何操作。
类型:Boolean
默认值:true
cacheDir
缓存目录的根路径。该目录用于存储尝试启动会话时下载的所有驱动程序。
类型:String
默认值:process.env.WEBDRIVER_CACHE_DIR || os.tmpdir()
maskingPatterns
为了更安全的日志记录,用maskingPatterns设置的正则表达式可以从日志中混淆敏感信息。
- 字符串格式是带有或不带标志的正则表达式(例如
/.../i),多个正则表达式用逗号分隔。 - 有关掩码模式的更多详细信息,请参阅WDIO Logger README中的掩码模式部分。
类型:String
默认值:undefined
示例:
{
maskingPatterns: '/--key=([^ ]*)/i,/RESULT (.*)/'
}
WebdriverIO
以下选项(包括上述选项)可以与独立的WebdriverIO一起使用:
automationProtocol
定义您想要用于浏览器自动化的协议。目前仅支持webdriver,因为它是WebdriverIO使用的主要浏览器自动化技术。
如果您想使用不同的自动化技术来自动化浏览器,请确保将此属性设置为解析为符合以下接口的模块的路径:
import type { Capabilities } from '@wdio/types';
import type { Client, AttachOptions } from 'webdriver';
export default class YourAutomationLibrary {
/**
* 开始自动化会话并返回带有相应自动化命令的WebdriverIO [monad](https://github.com/webdriverio/webdriverio/blob/940cd30939864bdbdacb2e94ee6e8ada9b1cc74c/packages/wdio-utils/src/monad.ts)
* 请参考[webdriver](https://www.npmjs.com/package/webdriver)包作为参考实现
*
* @param {Capabilities.RemoteConfig} options WebdriverIO选项
* @param {Function} hook 允许在客户端从函数中释放之前修改它
* @param {PropertyDescriptorMap} userPrototype 允许用户添加自定义协议命令
* @param {Function} customCommandWrapper 允许修改命令执行
* @returns 一个WebdriverIO兼容的客户端实例
*/
static newSession(
options: Capabilities.RemoteConfig,
modifier?: (...args: any[]) => any,
userPrototype?: PropertyDescriptorMap,
customCommandWrapper?: (...args: any[]) => any
): Promise<Client>;
/**
* 允许用户附加到现有会话
* @optional
*/
static attachToSession(
options?: AttachOptions,
modifier?: (...args: any[]) => any, userPrototype?: {},
commandWrapper?: (...args: any[]) => any
): Client;
/**
* 将实例会话ID和浏览器功能更改为新会话
* 直接传入浏览器对象
*
* @optional
* @param {object} instance 我们从新浏览器会话中获取的对象。
* @returns {string} 浏览器的新会话ID
*/
static reloadSession(
instance: Client,
newCapabilities?: WebdriverIO.Capabilitie
): Promise<string>;
}
类型:String
默认值:webdriver
baseUrl
通过设置基本URL来缩短url命令调用。
- 如果您的
url参数以/开头,则会在前面添加baseUrl(除了baseUrl路径,如果它有的话)。 - 如果您的
url参数没有方案或/开头(如some/path),则直接在前面添加完整的baseUrl。
类型:String
默认值:null
waitforTimeout
所有waitFor*命令的默认超时时间。(注意选项名称中的小写f)。此超时__仅__影响以waitFor*开头的命令及其默认等待时间。
要增加_测试_的超时时间,请参阅框架文档。
类型:Number
默认值:5000
waitforInterval
所有waitFor*命令检查预期状态(例如可见性)是否已更改的默认间隔。
类型:Number
默认值:100
region
如果在Sauce Labs上运行,您可以选择在不同的数据中心之间运行测试:美国或欧盟。
要将您的地区更改为欧盟,请在配置中添加region: 'eu'。
__注意:__这仅在您提供与Sauce Labs账户关联的user和key选项时才有效。
类型:String
默认值:us
(仅适用于虚拟机和/或em/模拟器)
测试运行器选项
以下选项(包括上述选项)仅适用于使用WDIO测试运行器运行WebdriverIO: