Przejdź do głównej treści

Możliwości

Możliwość (capability) to definicja dla zdalnego interfejsu. Pomaga ona WebdriverIO zrozumieć, w jakim środowisku przeglądarki lub urządzenia mobilnego chcesz uruchamiać 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śnie, jeśli zdefiniowane przez użytkownika możliwości nie będą zgodne z tą specyfikacją.

Niestandardowe możliwości

Podczas gdy liczba stałych 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ądarek

  • goog:chromeOptions: rozszerzenia Chromedriver, mają zastosowanie tylko dla testów w Chrome
  • moz:firefoxOptions: rozszerzenia Geckodriver, mają zastosowanie tylko dla testów w Firefox
  • ms:edgeOptions: EdgeOptions do określania środowiska podczas używania EdgeDriver do testowania Chromium Edge

Rozszerzenia możliwości dostawców usług chmurowych

Rozszerzenia możliwości silnika automatyzacji

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

WebdriverIO zarządza instalowaniem i uruchamianiem sterownika przeglądarki za Ciebie. WebdriverIO używa niestandardowej możliwości, która pozwala przekazać parametry do sterownika.

wdio:chromedriverOptions

Konkretne opcje przekazywane do Chromedriver podczas uruchamiania.

wdio:geckodriverOptions

Konkretne opcje przekazywane do Geckodriver podczas uruchamiania.

wdio:edgedriverOptions

Konkretne opcje przekazywane do Edgedriver podczas uruchamiania.

wdio:safaridriverOptions

Konkretne opcje przekazywane do Safari podczas uruchamiania.

wdio:maxInstances

Maksymalna liczba równolegle uruchomionych procesów roboczych dla konkretnej przeglądarki/możliwości. Ma pierwszeństwo przed maxInstances i maxInstancesPerCapability.

Typ: number

wdio:specs

Definiuje specyfikacje dla wykonywania testów dla danej przeglądarki/możliwości. Tak samo jak regularna opcja konfiguracji specs, ale specyficzna dla przeglądarki/możliwości. Ma pierwszeństwo przed specs.

Typ: (String | String[])[]

wdio:exclude

Wyklucza specyfikacje z wykonywania testów dla tej przeglądarki/możliwości. Tak samo jak regularna 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 wolisz tego uniknąć, możesz ustawić tę flagę, aby wyłączyć to zachowanie.

Typ: boolean

Wspólne opcje sterowników

Podczas gdy wszystkie sterowniki oferują różne parametry konfiguracji, istnieją pewne wspólne, które WebdriverIO rozumie i wykorzystuje do konfigurowania 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, 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 ustawione, WebdriverIO nie będzie próbować pobrać sterownika, ale użyje tego dostarczanego przez tę ścieżkę. Upewnij się, że sterownik jest kompatybilny z przeglądarką, której używasz.

Możesz podać tę ścieżkę za pomocą zmiennych środowiskowych CHROMEDRIVER_PATH, GECKODRIVER_PATH lub EDGEDRIVER_PATH.

Typ: string

ostrożnie

Jeśli plik binarny sterownika binary jest ustawiony, WebdriverIO nie będzie próbować pobrać sterownika, ale użyje tego dostarczanego przez tę ścieżkę. Upewnij się, że sterownik jest kompatybilny z przeglądarką, której używasz.

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 podstawowej ścieżki URL dla poleceń, np. wd/url.

Przykład: /

Typ: string

logPath

Zapisuje dziennik serwera do pliku zamiast stderr, zwiększa poziom logowania do INFO

Typ: string

logLevel

Ustaw poziom logowania. Możliwe opcje to ALL, DEBUG, INFO, WARNING, SEVERE, OFF.

Typ: string

verbose

Logowanie szczegółowe (równoważne z --log-level=ALL)

Typ: boolean

silent

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

Typ: boolean

appendLog

Dołącz plik dziennika zamiast nadpisywać.

Typ: boolean

replayable

Logowanie szczegółowe i brak skracania długich ciągów znaków, aby dziennik mógł być odtwarzany (eksperymentalne).

Typ: boolean

readableTimestamp

Dodaj czytelne znaczniki czasu do dziennika.

Typ: boolean

enableChromeLogs

Pokazuje dzienniki z przeglądarki (nadpisuje inne opcje logowania).

Typ: boolean

bidiMapperPath

Niestandardowa ścieżka do mappera bidi.

Typ: string

allowedIps

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

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

allowedOrigins

Rozdzielona 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 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 uruchamianie instancji przeglądarki bez okna lub interfejsu użytkownika. Jest to najczęściej używane w środowiskach CI/CD, gdzie nie jest używany wyświetlacz. 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 przetestować 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 na przeglądarkę, którą chcesz uruchomić, np.:

Podczas testowania w Chrome, WebdriverIO automatycznie pobierze żądaną wersję przeglądarki i sterownik na podstawie zdefiniowanego 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 przetestować 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'
}
}

Rozszerzenie niestandardowych możliwości

Jeśli chcesz zdefiniować własny zestaw możliwości, na przykład 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 : (dwukropka), 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