Przejdź do głównej treści

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.

informacja

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 Chrome
  • moz:firefoxOptions: Rozszerzenia Geckodriver, stosowane tylko do testowania w Firefox
  • ms:edgeOptions: EdgeOptions do określania środowiska podczas używania EdgeDriver do testowania Chromium Edge

Rozszerzenia zdolności dostawców usług w chmurze

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

ostrożnie

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
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

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:

{
browserName: 'chrome', // or 'chromium'
'goog:chromeOptions': {
args: ['headless', 'disable-gpu']
}
}

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.:

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'
}
}

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': {
// ...
}
}
}
}

Welcome! How can I help?

WebdriverIO AI Copilot