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