Moduler
WebdriverIO publicerar olika moduler till NPM och andra register som du kan använda för att bygga ditt eget automatiseringsramverk. Se mer dokumentation om WebdriverIO:s installationstyper här.
webdriver
och devtools
Protokollpaketen (webdriver
och devtools
) exponerar en klass med följande statiska funktioner som låter dig initiera sessioner:
newSession(options, modifier, userPrototype, customCommandWrapper)
Startar en ny session med specifika funktioner. Baserat på sessionssvaret kommer kommandon från olika protokoll att tillhandahållas.
Parametrar
options
: WebDriver Optionsmodifier
: funktion som tillåter modifiering av klientinstansen innan den returnerasuserPrototype
: egenskapsobjekt som låter dig utöka instansprototypencustomCommandWrapper
: funktion som gör det möjligt att paketera funktionalitet runt funktionsanrop
Returnerar
- Browser objekt
Exempel
const client = await WebDriver.newSession({
capabilities: { browserName: 'chrome' }
})
attachToSession(attachInstance, modifier, userPrototype, customCommandWrapper)
Ansluter till en pågående WebDriver eller DevTools-session.
Parametrar
attachInstance
: instans att ansluta en session till eller åtminstone ett objekt med en egenskapsessionId
(t.ex.{ sessionId: 'xxx' }
)modifier
: funktion som tillåter modifiering av klientinstansen innan den returnerasuserPrototype
: egenskapsobjekt som låter dig utöka instansprototypencustomCommandWrapper
: funktion som gör det möjligt att paketera funktionalitet runt funktionsanrop
Returnerar
- Browser objekt
Exempel
const client = await WebDriver.newSession({...})
const clonedClient = await WebDriver.attachToSession(client)
reloadSession(instance)
Laddar om en session för en given instans.
Parametrar
instance
: paketinstans att ladda om
Exempel
const client = await WebDriver.newSession({...})
await WebDriver.reloadSession(client)
webdriverio
På samma sätt som protokollpaketen (webdriver
och devtools
) kan du även använda WebdriverIO-paketets API:er för att hantera sessioner. API:erna kan importeras med import { remote, attach, multiremote } from 'webdriverio'
och innehåller följande funktionalitet:
remote(options, modifier)
Startar en WebdriverIO-session. Instansen innehåller alla kommandon som protokollpaketet men med ytterligare funktioner av högre ordning, se API-docs.
Parametrar
options
: WebdriverIO Optionsmodifier
: funktion som tillåter modifiering av klientinstansen innan den returneras
Returnerar
- Browser objekt
Exempel
import { remote } from 'webdriverio'
const browser = await remote({
capabilities: { browserName: 'chrome' }
})
attach(attachOptions)
Ansluter till en pågående WebdriverIO-session.
Parametrar
attachOptions
: instans att ansluta en session till eller åtminstone ett objekt med en egenskapsessionId
(t.ex.{ sessionId: 'xxx' }
)
Returnerar
- Browser objekt
Exempel
import { remote, attach } from 'webdriverio'
const browser = await remote({...})
const newBrowser = await attach(browser)
multiremote(multiremoteOptions)
Initierar en multiremote-instans som låter dig kontrollera flera sessioner inom en enda instans. Kolla in våra multiremote exempel för konkreta användningsfall.
Parametrar
multiremoteOptions
: ett objekt med nycklar som representerar webbläsarnamnet och deras WebdriverIO Options.
Returnerar
- Browser objekt
Exempel
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
Istället för att anropa kommandot wdio
kan du också inkludera testkörarmodulen och köra den i en godtycklig miljö. För detta behöver du importera @wdio/cli
-paketet som en modul, så här:
- EcmaScript Modules
- CommonJS
import Launcher from '@wdio/cli'
const Launcher = require('@wdio/cli').default
Därefter skapar du en instans av startaren och kör testet.
Launcher(configPath, opts)
Konstruktören för Launcher
-klassen förväntar sig URL:en till konfigurationsfilen och ett opts
-objekt med inställningar som kommer att skriva över dem i konfigurationen.
Parametrar
configPath
: sökväg tillwdio.conf.js
som ska körasopts
: argument (<RunCommandArguments>
) för att skriva över värden från konfigurationsfilen
Exempel
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)
})
Kommandot run
returnerar ett Promise. Det löses om testerna kördes framgångsrikt eller misslyckades, och det avvisas om startaren inte kunde starta testen.
@wdio/browser-runner
När du kör enhets- eller komponenttester med WebdriverIO:s webbläsarkörare kan du importera mockinverktyg för dina tester, t.ex.:
import { fn, spyOn, mock, unmock } from '@wdio/browser-runner'
Följande namngivna exporter är tillgängliga:
fn
Mockfunktion, se mer i de officiella Vitest-dokumenten.
spyOn
Spionerfunktion, se mer i de officiella Vitest-dokumenten.
mock
Metod för att mocka fil eller beroendemodulmodul.
Parametrar
moduleName
: antingen en relativ sökväg till filen som ska mockas eller ett modulnamn.factory
: funktion för att returnera det mockade värdet (valfritt)
Exempel
mock('../src/constants.ts', () => ({
SOME_DEFAULT: 'mocked out'
}))
mock('lodash', (origModuleFactory) => {
const origModule = await origModuleFactory()
return {
...origModule,
pick: fn()
}
})
unmock
Avmocka beroende som definieras inom den manuella mock-katalogen (__mocks__
).
Parametrar
moduleName
: namnet på modulen som ska avmockas.
Exempel
unmock('lodash')