跳到主要内容

使用云服务

在WebdriverIO中使用按需服务,如Sauce Labs、Browserstack、TestingBot、LambdaTest或Perfecto非常简单。您只需要在配置选项中设置您的服务的userkey

另外,您还可以通过设置特定云服务的能力(capabilities)如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远程运行。

唯一的要求是在您的配置中设置userkey(可以通过wdio.conf.js导出或传入webdriverio.remote(...))为您的Sauce Labs用户名和访问密钥。

您还可以在任何浏览器的capabilities中,以键/值形式传入任何可选的测试配置选项

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集成。

唯一的要求是在您的配置中设置userkey(可以通过wdio.conf.js导出或传入webdriverio.remote(...))为您的Browserstack自动化用户名和访问密钥。

您还可以在任何浏览器的capabilities中,以键/值形式传入任何可选的支持的功能。如果您将browserstack.debug设置为true,它将记录会话的屏幕录像,这可能会有所帮助。

本地测试

如果您想对互联网无法访问的服务器(如localhost)运行测试,那么您需要使用本地测试

WebdriverIO的范围不包括支持这一功能,所以您必须自己启动它。

如果您使用本地测试,应该在您的capabilities中将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

唯一的要求是在您的配置中设置userkey(可以通过wdio.conf.js导出或传入webdriverio.remote(...))为您的TestingBot用户名和密钥。

您还可以在任何浏览器的capabilities中,以键/值形式传入任何可选的支持的功能

本地测试

如果您想对互联网无法访问的服务器(如localhost)运行测试,那么您需要使用本地测试。TestingBot提供基于Java的隧道,允许您测试互联网无法访问的网站。

他们的隧道支持页面包含了使其启动和运行所需的信息。

如果您使用WDIO测试运行器,请在您的wdio.conf.js中下载并配置@wdio/testingbot-service。它有助于运行TestingBot,并带有其他功能,可以更好地将您的测试集成到TestingBot服务中。

LambdaTest

LambdaTest集成也是内置的。

唯一的要求是在您的配置中设置userkey(可以通过wdio.conf.js导出或传入webdriverio.remote(...))为您的LambdaTest账户用户名和访问密钥。

您还可以在任何浏览器的capabilities中,以键/值形式传入任何可选的支持的功能。如果您将visual设置为true,它将记录会话的屏幕录像,这可能会有所帮助。

本地测试隧道

如果您想对互联网无法访问的服务器(如localhost)运行测试,那么您需要使用本地测试

WebdriverIO的范围不包括支持这一功能,所以您必须自己启动它。

如果您使用本地测试,应该在您的capabilities中将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时,您需要为每个用户创建安全令牌,并将其添加到capabilities结构中(除了其他capabilities外),如下所示:

export const config = {
capabilities: [{
// ...
securityToken: "your security token"
}],

此外,您需要添加云配置,如下所示:

  hostname: "your_cloud_name.perfectomobile.com",
path: "/nexperience/perfectomobile/wd/hub",
port: 443,
protocol: "https",

Welcome! How can I help?

WebdriverIO AI Copilot