Przejdź do głównej treści

Moduły

WebdriverIO publikuje różne moduły w rejestrach NPM i innych, których możesz używać do budowania własnego frameworka automatyzacji. Zobacz więcej dokumentacji na temat typów konfiguracji WebdriverIO tutaj.

webdriver i devtools

Pakiety protokołów (webdriver i devtools) udostępniają klasę z następującymi dołączonymi funkcjami statycznymi, które umożliwiają inicjowanie sesji:

newSession(options, modifier, userPrototype, customCommandWrapper)

Rozpoczyna nową sesję z określonymi możliwościami. Na podstawie odpowiedzi sesji udostępniane będą komendy z różnych protokołów.

Parametry
  • options: Opcje WebDriver
  • modifier: funkcja, która pozwala modyfikować instancję klienta przed jej zwróceniem
  • userPrototype: obiekt właściwości, który pozwala rozszerzyć prototyp instancji
  • customCommandWrapper: funkcja, która pozwala owinąć funkcjonalność wokół wywołań funkcji
Zwraca
Przykład
const client = await WebDriver.newSession({
capabilities: { browserName: 'chrome' }
})

attachToSession(attachInstance, modifier, userPrototype, customCommandWrapper)

Dołącza do działającej sesji WebDriver lub DevTools.

Parametry
  • attachInstance: instancja, do której ma zostać dołączona sesja, lub co najmniej obiekt z właściwością sessionId (np. { sessionId: 'xxx' })
  • modifier: funkcja, która pozwala modyfikować instancję klienta przed jej zwróceniem
  • userPrototype: obiekt właściwości, który pozwala rozszerzyć prototyp instancji
  • customCommandWrapper: funkcja, która pozwala owinąć funkcjonalność wokół wywołań funkcji
Zwraca
Przykład
const client = await WebDriver.newSession({...})
const clonedClient = await WebDriver.attachToSession(client)

reloadSession(instance)

Przeładowuje sesję dla dostarczonej instancji.

Parametry
  • instance: instancja pakietu do przeładowania
Przykład
const client = await WebDriver.newSession({...})
await WebDriver.reloadSession(client)

webdriverio

Podobnie jak w przypadku pakietów protokołów (webdriver i devtools), możesz również używać API pakietu WebdriverIO do zarządzania sesjami. API można importować za pomocą import { remote, attach, multiremote } from 'webdriverio' i zawierają następujące funkcje:

remote(options, modifier)

Rozpoczyna sesję WebdriverIO. Instancja zawiera wszystkie komendy z pakietu protokołu, ale z dodatkowymi funkcjami wyższego rzędu, zobacz dokumentację API.

Parametry
  • options: Opcje WebdriverIO
  • modifier: funkcja, która pozwala modyfikować instancję klienta przed jej zwróceniem
Zwraca
Przykład
import { remote } from 'webdriverio'

const browser = await remote({
capabilities: { browserName: 'chrome' }
})

attach(attachOptions)

Dołącza do działającej sesji WebdriverIO.

Parametry
  • attachOptions: instancja, do której ma zostać dołączona sesja, lub co najmniej obiekt z właściwością sessionId (np. { sessionId: 'xxx' })
Zwraca
Przykład
import { remote, attach } from 'webdriverio'

const browser = await remote({...})
const newBrowser = await attach(browser)

multiremote(multiremoteOptions)

Inicjuje instancję multiremote, która pozwala kontrolować wiele sesji w ramach jednej instancji. Sprawdź nasze przykłady multiremote dla konkretnych przypadków użycia.

Parametry
  • multiremoteOptions: obiekt z kluczami reprezentującymi nazwę przeglądarki i ich Opcjami WebdriverIO.
Zwraca
Przykład
import { multiremote } from 'webdriverio'

const matrix = await multiremote({
myChromeBrowser: {
capabilities: { browserName: 'chrome' }
},
myFirefoxBrowser: {
capabilities: { browserName: 'firefox' }
}
})
await matrix.url('http://json.org')
await matrix.getInstance('browserA').url('https://google.com')

console.log(await matrix.getTitle())
// returns ['Google', 'JSON']

@wdio/cli

Zamiast wywoływać polecenie wdio, możesz również dołączyć test runner jako moduł i uruchomić go w dowolnym środowisku. W tym celu musisz zaimportować pakiet @wdio/cli jako moduł, w następujący sposób:

import Launcher from '@wdio/cli'

Następnie utwórz instancję launchera i uruchom test.

Launcher(configPath, opts)

Konstruktor klasy Launcher oczekuje URL do pliku konfiguracyjnego oraz obiektu opts z ustawieniami, które nadpiszą te w konfiguracji.

Parametry
  • configPath: ścieżka do pliku wdio.conf.js do uruchomienia
  • opts: argumenty (<RunCommandArguments>) do nadpisania wartości z pliku konfiguracyjnego
Przykład
const wdio = new Launcher(
'/path/to/my/wdio.conf.js',
{ spec: '/path/to/a/single/spec.e2e.js' }
)

wdio.run().then((exitCode) => {
process.exit(exitCode)
}, (error) => {
console.error('Launcher failed to start the test', error.stacktrace)
process.exit(1)
})

Polecenie run zwraca Promise. Jest ono rozwiązywane, jeśli testy zakończyły się pomyślnie lub nie powiodły się, a jest odrzucane, jeśli launcher nie mógł uruchomić testów.

@wdio/browser-runner

Podczas uruchamiania testów jednostkowych lub komponentowych za pomocą przeglądarki testowej WebdriverIO, możesz zaimportować narzędzia do mockowania dla swoich testów, np.:

import { fn, spyOn, mock, unmock } from '@wdio/browser-runner'

Dostępne są następujące nazwane eksporty:

fn

Funkcja mockująca, więcej informacji w oficjalnej dokumentacji Vitest.

spyOn

Funkcja szpiegująca, więcej informacji w oficjalnej dokumentacji Vitest.

mock

Metoda do mockowania pliku lub modułu zależności.

Parametry
  • moduleName: relatywna ścieżka do pliku, który ma być mockowany, lub nazwa modułu.
  • factory: funkcja zwracająca zamockowaną wartość (opcjonalna)
Przykład
mock('../src/constants.ts', () => ({
SOME_DEFAULT: 'mocked out'
}))

mock('lodash', (origModuleFactory) => {
const origModule = await origModuleFactory()
return {
...origModule,
pick: fn()
}
})

unmock

Usuwa mockowanie zależności, która jest zdefiniowana w ręcznym katalogu mock (__mocks__).

Parametry
  • moduleName: nazwa modułu, który ma być odmockowany.
Przykład
unmock('lodash')

Welcome! How can I help?

WebdriverIO AI Copilot