跳至主要內容

使用雲端服務

使用像 Sauce Labs、Browserstack、TestingBot、LambdaTest 或 Perfecto 這樣的隨選服務搭配 WebdriverIO 非常簡單。您只需要在選項中設定您服務的 userkey 即可。

您也可以選擇設定雲端特定的功能,例如 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 使用者名稱和存取金鑰。

您也可以在任何瀏覽器的功能中傳遞任何可選的測試組態選項作為鍵/值對。

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 自動化使用者名稱和存取金鑰。

您也可以在任何瀏覽器的功能中傳遞任何可選的支援的功能作為鍵/值對。如果您將 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

唯一的要求是在您的組態中設定 userkey (可以從 wdio.conf.js 匯出,或傳遞到 webdriverio.remote(...)) 為您的 TestingBot 使用者名稱和密鑰。

您也可以在任何瀏覽器的功能中傳遞任何可選的支援的功能作為鍵/值對。

本機測試

如果您想針對無法連線到網際網路的伺服器 (例如在 localhost 上) 執行測試,那麼您需要使用 本機測試。TestingBot 提供了一個基於 Java 的通道,讓您可以測試無法從網際網路存取的網站。

他們的通道支援頁面包含讓它啟動並運作的必要資訊。

如果您正在使用 WDIO 測試執行器,請在您的 wdio.conf.js 中下載並設定 @wdio/testingbot-service。它可以協助 TestingBot 執行,並提供其他功能,可以更好地將您的測試整合到 TestingBot 服務中。

LambdaTest

也內建了 LambdaTest 整合功能。

唯一的要求是在您的組態中設定 userkey (可以從 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

當搭配 Perfecto 使用 wdio 時,您需要為每個使用者建立安全權杖,並將其新增到功能結構中 (除了其他功能之外),如下所示

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

此外,您還需要新增雲端組態,如下所示

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

歡迎!我能幫您什麼嗎?

WebdriverIO AI Copilot