Przejdź do głównej treści

Możliwości

Możliwość (capability) to definicja zdalnego interfejsu. Pomaga ona WebdriverIO zrozumieć, w jakim środowisku przeglądarki lub urządzenia mobilnego chcesz uruchomić swoje testy. Możliwości są mniej kluczowe podczas lokalnego tworzenia 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 możliwości jest dobrze zdefiniowany przez specyfikację WebDriver. Testrunner WebdriverIO zakończy działanie wcześniej, jeśli zdefiniowane przez użytkownika możliwości nie będą zgodne z tą specyfikacją.

Niestandardowe możliwości

Podczas gdy liczba ustalonych, zdefiniowanych możliwości jest bardzo niska, każdy może dostarczać i akceptować niestandardowe możliwości, które są specyficzne dla sterownika automatyzacji lub zdalnego interfejsu:

Rozszerzenia możliwości specyficzne dla przeglądarki

  • goog:chromeOptions: Rozszerzenia Chromedriver, stosowane tylko dla testowania w Chrome
  • moz:firefoxOptions: Rozszerzenia Geckodriver, stosowane tylko dla testowania w Firefox
  • ms:edgeOptions: EdgeOptions do określania środowiska podczas używania EdgeDriver do testowania Chromium Edge

Rozszerzenia możliwości dostawców chmurowych

Rozszerzenia możliwości silnika automatyzacji

Możliwości WebdriverIO do zarządzania opcjami sterownika przeglądarki

WebdriverIO zarządza instalacją i uruchamianiem sterownika przeglądarki za Ciebie. WebdriverIO używa niestandardowej możliwoś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 równolegle działających pracowników dla określonej przeglądarki/możliwości. Ma pierwszeństwo przed maxInstances i maxInstancesPerCapability.

Typ: number

wdio:specs

Definiuje specyfikacje dla wykonania testu dla tej przeglądarki/możliwości. Tak samo jak zwykła opcja konfiguracji specs, ale specyficzna dla przeglądarki/możliwości. Ma pierwszeństwo przed specs.

Typ: (String | String[])[]

wdio:exclude

Wyklucza specyfikacje z wykonania testu dla tej przeglądarki/możliwości. Tak samo jak zwykła opcja konfiguracji exclude, ale specyficzna dla przeglądarki/możliwości. Wyklucza po zastosowaniu globalnej opcji konfiguracji 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 do konfiguracji, 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 służy do przechowywania wszystkich sterowników pobranych 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. Po ustawieniu 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 ustawiono binary sterownika, 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 możliwoś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 ścieżki bazowej URL dla poleceń, np. wd/url.

Przykład: /

Typ: string

logPath

Zapisz dziennik serwera do pliku zamiast na 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 (równoważne --log-level=ALL)

Typ: boolean

silent

Nie loguj niczego (równoważne --log-level=OFF)

Typ: boolean

appendLog

Dołącz do pliku dziennika zamiast nadpisywać.

Typ: boolean

replayable

Loguj szczegółowo i nie obcinaj długich ciągów, aby dziennik mógł być odtworzony (eksperymentalne).

Typ: boolean

readableTimestamp

Dodaj czytelne znaczniki czasu do dziennika.

Typ: boolean

enableChromeLogs

Pokaż dzienniki z przeglądarki (zastępuje inne opcje logowania).

Typ: boolean

bidiMapperPath

Niestandardowa ścieżka mapera bidi.

Typ: string

allowedIps

Lista dozwolonych zdalnych adresów IP, które mogą łączyć się z EdgeDriver, oddzielona przecinkami.

Typ: string[]
Domyślnie: ['']

allowedOrigins

Lista dozwolonych źródeł żądań, które mogą łączyć się z EdgeDriver, oddzielona przecinkami. Używanie * do zezwolenia dowolnemu źródłu jest niebezpieczne!

Typ: string[]
Domyślnie: ['*']

spawnOpts

Opcje przekazywane do procesu sterownika.

Typ: SpawnOptionsWithoutStdio | SpawnOptionsWithStdioTuple<StdioOption, StdioOption, StdioOption>
Domyślnie: undefined

Specjalne możliwości dla konkretnych przypadków użycia

To lista przykładów pokazujących, które możliwoś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 uruchomienie instancji przeglądarki bez okna lub interfejsu użytkownika. Jest to najczęściej używane w środowiskach CI/CD, gdzie nie używa się wyświetlacza. Aby uruchomić przeglądarkę w trybie headless, zastosuj następujące możliwości:

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

Automatyzacja różnych kanałów przeglądarek

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 możliwości i wskazując przeglądarkę, którą chcesz uruchomić, np.:

Podczas testowania w Chrome, WebdriverIO automatycznie pobierze żądaną wersję przeglądarki i sterownika na podstawie zdefiniowanej browserVersion, np.:

{
browserName: 'chrome', // lub 'chromium'
browserVersion: '116' // lub '116.0.5845.96', 'stable', 'dev', 'canary', 'beta' lub 'latest' (to samo co 'canary')
}

Jeśli chcesz testować ręcznie pobraną przeglądarkę, możesz podać ścieżkę binarną do przeglądarki za pomocą:

{
browserName: 'chrome', // lub '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', // lub 'chromium'
'wdio:chromedriverOptions': {
binary: '/path/to/chromdriver'
}
}

Rozszerzanie niestandardowych możliwości

Jeśli chcesz zdefiniować własny zestaw możliwości, np. w celu przechowywania dowolnych danych do wykorzystania w testach dla tej konkretnej możliwości, możesz to zrobić np. ustawiając:

export const config = {
// ...
capabilities: [{
browserName: 'chrome',
'custom:caps': {
// niestandardowe konfiguracje
}
}]
}

Zaleca się przestrzeganie protokołu W3C w odniesieniu do nazewnictwa możliwości, które wymaga znaku : (dwukropek), oznaczającego przestrzeń nazw specyficzną dla implementacji. W swoich testach możesz uzyskać dostęp do niestandardowej możliwości poprzez, np.:

browser.capabilities['custom:caps']

Aby zapewnić bezpieczeństwo typów, możesz rozszerzyć interfejs możliwości WebdriverIO poprzez:

declare global {
namespace WebdriverIO {
interface Capabilities {
'custom:caps': {
// ...
}
}
}
}

Welcome! How can I help?

WebdriverIO AI Copilot