使用云服务
使用像 Sauce Labs、Browserstack、TestingBot、LambdaTest 或 Perfecto 这样的按需服务与 WebdriverIO 结合非常简单。您需要做的就是在选项中设置服务的user
和 key
。
或者,您还可以通过设置特定于云的功能(如build
)来参数化您的测试。如果您只想在 Travis 中运行云服务,则可以使用CI
环境变量来检查您是否在 Travis 中,并相应地修改配置。
// wdio.conf.js
export let config = {...}
if (process.env.CI) {
config.user = process.env.SAUCE_USERNAME
config.key = process.env.SAUCE_ACCESS_KEY
}
Sauce Labs
您可以设置您的测试以在Sauce Labs中远程运行。
唯一的要求是在您的配置中设置user
和 key
(由wdio.conf.js
导出或传递到webdriverio.remote(...)
)到您的 Sauce Labs 用户名和访问密钥。
您还可以将任何可选的测试配置选项作为键/值对传递到任何浏览器的功能中。
Sauce Connect
如果您想针对无法访问互联网的服务器运行测试(例如在localhost
上),则需要使用Sauce Connect。
WebdriverIO 不支持此功能,因此您必须自己启动它。
如果您使用的是 WDIO 测试运行器,请下载并在您的wdio.conf.js
中配置@wdio/sauce-service
。它有助于使 Sauce Connect 运行,并提供更好地将您的测试集成到 Sauce 服务中的其他功能。
使用 Travis CI
但是,Travis CI确实支持在每次测试前启动 Sauce Connect,因此遵循他们的说明是一个选项。
如果您这样做,则必须在每个浏览器的capabilities
中设置tunnel-identifier
测试配置选项。默认情况下,Travis 将其设置为TRAVIS_JOB_NUMBER
环境变量。
此外,如果您希望 Sauce Labs 按构建编号对您的测试进行分组,则可以将build
设置为TRAVIS_BUILD_NUMBER
。
最后,如果您设置了name
,这将更改此构建中 Sauce Labs 中此测试的名称。如果您使用的是 WDIO 测试运行器以及@wdio/sauce-service
,WebdriverIO 会自动为测试设置正确的名称。
示例capabilities
browserName: 'chrome',
version: '27.0',
platform: 'XP',
'tunnel-identifier': process.env.TRAVIS_JOB_NUMBER,
name: 'integration',
build: process.env.TRAVIS_BUILD_NUMBER
超时
由于您是在远程运行测试,因此可能需要增加一些超时时间。
您可以通过将idle-timeout
作为测试配置选项来更改空闲超时。这控制了 Sauce 在命令之间等待多长时间才能关闭连接。
BrowserStack
WebdriverIO 还内置了Browserstack 集成。
唯一的要求是在您的配置中设置user
和 key
(由wdio.conf.js
导出或传递到webdriverio.remote(...)
)到您的 Browserstack 自动化用户名和访问密钥。
您还可以将任何可选的支持的功能作为键/值对传递到任何浏览器的功能中。如果您将browserstack.debug
设置为true
,它将记录会话的屏幕录制,这可能会有所帮助。
本地测试
如果您想针对无法访问互联网的服务器运行测试(例如在localhost
上),则需要使用本地测试。
WebdriverIO 不支持此功能,因此您必须自己启动它。
如果您确实使用了本地测试,则应在您的功能中将browserstack.local
设置为true
。
如果您使用的是 WDIO 测试运行器,请下载并在您的wdio.conf.js
中配置@wdio/browserstack-service
。它有助于使 BrowserStack 运行,并提供更好地将您的测试集成到 BrowserStack 服务中的其他功能。
使用 Travis CI
如果您想在 Travis 中添加本地测试,则必须自己启动它。
以下脚本将在后台下载并启动它。您应该在 Travis 启动测试之前运行它。
wget https://www.browserstack.com/browserstack-local/BrowserStackLocal-linux-x64.zip
unzip BrowserStackLocal-linux-x64.zip
./BrowserStackLocal -v -onlyAutomate -forcelocal $BROWSERSTACK_ACCESS_KEY &
sleep 3
此外,您可能希望将build
设置为 Travis 构建编号。
示例capabilities
browserName: 'chrome',
project: 'myApp',
version: '44.0',
build: `myApp #${process.env.TRAVIS_BUILD_NUMBER}.${process.env.TRAVIS_JOB_NUMBER}`,
'browserstack.local': 'true',
'browserstack.debug': 'true'
TestingBot
唯一的要求是在您的配置中设置user
和 key
(由wdio.conf.js
导出或传递到webdriverio.remote(...)
)到您的TestingBot用户名和密钥。
您还可以将任何可选的支持的功能作为键/值对传递到任何浏览器的功能中。
本地测试
如果您想针对无法访问互联网的服务器运行测试(例如在localhost
上),则需要使用本地测试。TestingBot 提供了一个基于 Java 的隧道,允许您测试无法从互联网访问的网站。
他们的隧道支持页面包含使之正常运行所需的信息。
如果您使用的是 WDIO 测试运行器,请下载并在您的wdio.conf.js
中配置@wdio/testingbot-service
。它有助于使 TestingBot 运行,并提供更好地将您的测试集成到 TestingBot 服务中的其他功能。
LambdaTest
LambdaTest 集成也已内置。
唯一的要求是在您的配置中设置user
和 key
(由wdio.conf.js
导出或传递到webdriverio.remote(...)
)到您的 LambdaTest 帐户用户名和访问密钥。
您还可以将任何可选的支持的功能作为键/值对传递到任何浏览器的功能中。如果您将visual
设置为true
,它将记录会话的屏幕录制,这可能会有所帮助。
本地测试的隧道
如果您想针对无法访问互联网的服务器运行测试(例如在localhost
上),则需要使用本地测试。
WebdriverIO 不支持此功能,因此您必须自己启动它。
如果您确实使用了本地测试,则应在您的功能中将tunnel
设置为true
。
如果您使用的是 WDIO 测试运行器,请下载并在您的wdio.conf.js
中配置wdio-lambdatest-service
。它有助于使 LambdaTest 运行,并提供更好地将您的测试集成到 LambdaTest 服务中的其他功能。
使用 Travis CI
如果您想在 Travis 中添加本地测试,则必须自己启动它。
以下脚本将在后台下载并启动它。您应该在 Travis 启动测试之前运行它。
wget http://downloads.lambdatest.com/tunnel/linux/64bit/LT_Linux.zip
unzip LT_Linux.zip
./LT -user $LT_USERNAME -key $LT_ACCESS_KEY -cui &
sleep 3
此外,您可能希望将build
设置为 Travis 构建编号。
示例capabilities
platform: 'Windows 10',
browserName: 'chrome',
version: '79.0',
build: `myApp #${process.env.TRAVIS_BUILD_NUMBER}.${process.env.TRAVIS_JOB_NUMBER}`,
'tunnel': 'true',
'visual': 'true'
Perfecto
当将 wdio 与Perfecto
一起使用时,您需要为每个用户创建一个安全令牌,并将其添加到功能结构中(除了其他功能),如下所示
export const config = {
capabilities: [{
// ...
securityToken: "your security token"
}],
此外,您需要添加云配置,如下所示
hostname: "your_cloud_name.perfectomobile.com",
path: "/nexperience/perfectomobile/wd/hub",
port: 443,
protocol: "https",