Zdolności
Zdolność (capability) to definicja dla zdalnego interfejsu. Pomaga WebdriverIO zrozumieć, w jakim środowisku przeglądarki lub urządzenia mobilnego chcesz uruchamiać swoje testy. Zdolności są mniej kluczowe podczas lokalnego rozwijania testów, ponieważ najczęściej uruchamiasz je na jednym zdalnym interfejsie, ale stają się ważniejsze podczas uruchamiania dużego zestawu testów integracyjnych w CI/CD.
Format obiektu zdolności jest dobrze zdefiniowany przez specyfikację WebDriver. Testrunner WebdriverIO zakończy się wcześnie niepowodzeniem, jeśli zdolności zdefiniowane przez użytkownika nie będą zgodne z tą specyfikacją.
Niestandardowe zdolności
Podczas gdy liczba ściśle zdefiniowanych zdolności jest bardzo niska, każdy może dostarczać i akceptować niestandardowe zdolności, które są specyficzne dla sterownika automatyzacji lub zdalnego interfejsu:
Rozszerzenia zdolności specyficzne dla przeglądarki
goog:chromeOptions
: Rozszerzenia Chromedriver, stosowane tylko do testowania w Chromemoz:firefoxOptions
: Rozszerzenia Geckodriver, stosowane tylko do testowania w Firefoxms:edgeOptions
: EdgeOptions do określania środowiska podczas używania EdgeDriver do testowania Chromium Edge
Rozszerzenia zdolności dostawców usług w chmurze
sauce:options
: Sauce Labsbstack:options
: BrowserStacktb:options
: TestingBot- i wiele innych...
Rozszerzenia zdolności silnika automatyzacji
Zdolności WebdriverIO do zarządzania opcjami sterownika przeglądarki
WebdriverIO zarządza instalacją i uruchamianiem sterownika przeglądarki za Ciebie. WebdriverIO używa niestandardowej zdolności, która pozwala na przekazanie parametrów do sterownika.
wdio:chromedriverOptions
Konkretne opcje przekazywane do Chromedriver podczas jego uruchamiania.
wdio:geckodriverOptions
Konkretne opcje przekazywane do Geckodriver podczas jego uruchamiania.
wdio:edgedriverOptions
Konkretne opcje przekazywane do Edgedriver podczas jego uruchamiania.
wdio:safaridriverOptions
Konkretne opcje przekazywane do Safari podczas jego uruchamiania.
wdio:maxInstances
Maksymalna liczba wszystkich równolegle działających pracowników dla określonej przeglądarki/zdolności. Ma pierwszeństwo przed maxInstances i maxInstancesPerCapability.
Typ: number
wdio:specs
Określa specyfikacje dla wykonania testów dla tej przeglądarki/zdolności. Tak samo jak zwykła opcja konfiguracyjna specs
, ale specyficzna dla przeglądarki/zdolności. Ma pierwszeństwo przed specs
.
Typ: (String | String[])[]
wdio:exclude
Wyklucza specyfikacje z wykonania testów dla tej przeglądarki/zdolności. Tak samo jak zwykła opcja konfiguracyjna exclude
, ale specyficzna dla przeglądarki/zdolności. Ma pierwszeństwo przed exclude
.
Typ: String[]
wdio:enforceWebDriverClassic
Domyślnie WebdriverIO próbuje ustanowić sesję WebDriver Bidi. Jeśli tego nie preferujesz, możesz ustawić tę flagę, aby wyłączyć to zachowanie.
Typ: boolean
Wspólne opcje sterownika
Podczas gdy wszystkie sterowniki oferują różne parametry konfiguracyjne, istnieją pewne wspólne, które WebdriverIO rozumie i używa do konfiguracji sterownika lub przeglądarki:
cacheDir
Ścieżka do katalogu głównego pamięci podręcznej. Ten katalog jest używany do przechowywania wszystkich sterowników, które są pobierane podczas próby rozpoczęcia sesji.
Typ: string
Domyślnie: process.env.WEBDRIVER_CACHE_DIR || os.tmpdir()
binary
Ścieżka do niestandardowego pliku binarnego sterownika. Jeśli ustawiona, WebdriverIO nie będzie próbować pobrać sterownika, ale użyje tego dostarczonego przez tę ścieżkę. Upewnij się, że sterownik jest kompatybilny z używaną przeglądarką.
Możesz podać tę ścieżkę za pomocą zmiennych środowiskowych CHROMEDRIVER_PATH
, GECKODRIVER_PATH
lub EDGEDRIVER_PATH
.
Typ: string
Jeśli binary
sterownika jest ustawione, WebdriverIO nie będzie próbować pobrać sterownika, ale użyje tego dostarczonego przez tę ścieżkę. Upewnij się, że sterownik jest kompatybilny z używaną przeglądarką.
Opcje sterownika specyficzne dla przeglądarki
Aby przekazać opcje do sterownika, możesz użyć następujących niestandardowych zdolności:
- Chrome lub Chromium:
wdio:chromedriverOptions
- Firefox:
wdio:geckodriverOptions
- Microsoft Edge:
wdio:edgedriverOptions
- Safari:
wdio:safaridriverOptions
- wdio:chromedriverOptions
- wdio:geckodriverOptions
- wdio:edgedriverOptions
- wdio:safaridriverOptions
adbPort
Port, na którym powinien działać sterownik ADB.
Przykład: 9515
Typ: number
urlBase
Prefiks podstawowej ścieżki URL dla poleceń, np. wd/url
.
Przykład: /
Typ: string
logPath
Zapisz dziennik serwera do pliku zamiast do stderr, zwiększa poziom logowania do INFO
Typ: string
logLevel
Ustaw poziom logowania. Możliwe opcje ALL
, DEBUG
, INFO
, WARNING
, SEVERE
, OFF
.
Typ: string
verbose
Loguj szczegółowo (odpowiednik --log-level=ALL
)
Typ: boolean
silent
Nie loguj niczego (odpowiednik --log-level=OFF
)
Typ: boolean
appendLog
Dołącz do pliku dziennika zamiast ponownego zapisywania.
Typ: boolean
replayable
Loguj szczegółowo i nie obcinaj długich ciągów, aby można było odtworzyć dziennik (eksperymentalne).
Typ: boolean
readableTimestamp
Dodaj czytelne znaczniki czasu do dziennika.
Typ: boolean
enableChromeLogs
Pokazuj dzienniki z przeglądarki (nadpisuje inne opcje logowania).
Typ: boolean
bidiMapperPath
Niestandardowa ścieżka mappera bidi.
Typ: string
allowedIps
Oddzielona przecinkami lista dozwolonych zdalnych adresów IP, które mogą łączyć się z EdgeDriver.
Typ: string[]
Domyślnie: ['']
allowedOrigins
Oddzielona przecinkami lista dozwolonych źródeł żądań, które mogą łączyć się z EdgeDriver. Używanie *
do zezwolenia na dowolne źródło hosta jest niebezpieczne!
Typ: string[]
Domyślnie: ['*']
spawnOpts
Opcje przekazywane do procesu sterownika.
Typ: SpawnOptionsWithoutStdio | SpawnOptionsWithStdioTuple<StdioOption, StdioOption, StdioOption>
Domyślnie: undefined
Zobacz wszystkie opcje Geckodriver w oficjalnym pakiecie sterownika.
Zobacz wszystkie opcje Edgedriver w oficjalnym pakiecie sterownika.
Zobacz wszystkie opcje Safaridriver w oficjalnym pakiecie sterownika.
Specjalne zdolności dla konkretnych przypadków użycia
To jest lista przykładów pokazujących, jakie zdolności należy zastosować, aby osiągnąć określony przypadek użycia.
Uruchamianie przeglądarki w trybie headless
Uruchamianie przeglądarki w trybie headless oznacza uruchamianie instancji przeglądarki bez okna lub interfejsu użytkownika. Jest to głównie używane w środowiskach CI/CD, gdzie nie używa się wyświetlacza. Aby uruchomić przeglądarkę w trybie headless, zastosuj następujące zdolności:
- Chrome
- Firefox
- Microsoft Edge
- Safari
{
browserName: 'chrome', // or 'chromium'
'goog:chromeOptions': {
args: ['headless', 'disable-gpu']
}
}
browserName: 'firefox',
'moz:firefoxOptions': {
args: ['-headless']
}
browserName: 'msedge',
'ms:edgeOptions': {
args: ['--headless']
}
Wygląda na to, że Safari nie obsługuje uruchamiania w trybie headless.
Automatyzacja różnych kanałów przeglądarki
Jeśli chcesz testować wersję przeglądarki, która nie została jeszcze wydana jako stabilna, np. Chrome Canary, możesz to zrobić, ustawiając zdolności i wskazując przeglądarkę, którą chcesz uruchomić, np.:
- Chrome
- Firefox
- Microsoft Edge
- Safari
Podczas testowania na Chrome, WebdriverIO automatycznie pobierze żądaną wersję przeglądarki i sterownika na podstawie zdefiniowanego browserVersion
, np.:
{
browserName: 'chrome', // or 'chromium'
browserVersion: '116' // or '116.0.5845.96', 'stable', 'dev', 'canary', 'beta' or 'latest' (same as 'canary')
}
Jeśli chcesz przetestować ręcznie pobraną przeglądarkę, możesz podać ścieżkę binarną do przeglądarki za pomocą:
{
browserName: 'chrome', // or 'chromium'
'goog:chromeOptions': {
binary: '/Applications/Google\ Chrome\ Canary.app/Contents/MacOS/Google\ Chrome\ Canary'
}
}
Dodatkowo, jeśli chcesz użyć ręcznie pobranego sterownika, możesz podać ścieżkę binarną do sterownika za pomocą:
{
browserName: 'chrome', // or 'chromium'
'wdio:chromedriverOptions': {
binary: '/path/to/chromdriver'
}
}
Podczas testowania na Firefox, WebdriverIO automatycznie pobierze żądaną wersję przeglądarki i sterownika na podstawie zdefiniowanego browserVersion
, np.:
{
browserName: 'firefox',
browserVersion: '119.0a1' // or 'latest'
}
Jeśli chcesz przetestować ręcznie pobraną wersję, możesz podać ścieżkę binarną do przeglądarki za pomocą:
{
browserName: 'firefox',
'moz:firefoxOptions': {
binary: '/Applications/Firefox\ Nightly.app/Contents/MacOS/firefox'
}
}
Dodatkowo, jeśli chcesz użyć ręcznie pobranego sterownika, możesz podać ścieżkę binarną do sterownika za pomocą:
{
browserName: 'firefox',
'wdio:geckodriverOptions': {
binary: '/path/to/geckodriver'
}
}
Podczas testowania na Microsoft Edge, upewnij się, że masz zainstalowaną pożądaną wersję przeglądarki na swoim komputerze. Możesz wskazać WebdriverIO przeglądarkę do wykonania za pomocą:
{
browserName: 'msedge',
'ms:edgeOptions': {
binary: '/Applications/Microsoft\ Edge\ Canary.app/Contents/MacOS/Microsoft\ Edge\ Canary'
}
}
WebdriverIO automatycznie pobierze odpowiednią wersję sterownika na podstawie zdefiniowanego browserVersion
, np.:
{
browserName: 'msedge',
browserVersion: '109' // or '109.0.1467.0', 'stable', 'dev', 'canary', 'beta'
}
Dodatkowo, jeśli chcesz użyć ręcznie pobranego sterownika, możesz podać ścieżkę binarną do sterownika za pomocą:
{
browserName: 'msedge',
'wdio:edgedriverOptions': {
binary: '/path/to/msedgedriver'
}
}
Podczas testowania na Safari, upewnij się, że masz zainstalowany Safari Technology Preview na swoim komputerze. Możesz wskazać WebdriverIO tę wersję za pomocą:
{
browserName: 'safari technology preview'
}
Rozszerzanie niestandardowych zdolności
Jeśli chcesz zdefiniować własny zestaw zdolności, aby np. przechowywać dowolne dane do wykorzystania w testach dla tej konkretnej zdolności, możesz to zrobić, np. ustawiając:
export const config = {
// ...
capabilities: [{
browserName: 'chrome',
'custom:caps': {
// custom configurations
}
}]
}
Zaleca się postępowanie zgodnie z protokołem W3C dotyczącym nazewnictwa zdolności, które wymaga znaku :
(dwukropek), oznaczającego przestrzeń nazw specyficzną dla implementacji. W swoich testach możesz uzyskać dostęp do niestandardowej zdolności za pomocą, np.:
browser.capabilities['custom:caps']
Aby zapewnić bezpieczeństwo typów, możesz rozszerzyć interfejs zdolności WebdriverIO za pomocą:
declare global {
namespace WebdriverIO {
interface Capabilities {
'custom:caps': {
// ...
}
}
}
}