Funktioner
En kapacitet är en definition för ett fjärrgränssnitt. Det hjälper WebdriverIO att förstå i vilken webbläsar- eller mobilmiljö du vill köra dina tester. Kapaciteter är mindre avgörande när du utvecklar tester lokalt eftersom du oftast kör dem på ett fjärrgränssnitt, men de blir viktigare när du kör en stor uppsättning integrationstester i CI/CD.
Formatet för ett kapacitetsobjekt är väl definierat av WebDriver-specifikationen. WebdriverIO-testföraren kommer att misslyckas tidigt om användardefinierade kapaciteter inte följer den specifikationen.
Anpassade kapaciteter
Medan antalet fast definierade kapaciteter är mycket lågt, kan alla tillhandahålla och acceptera anpassade kapaciteter som är specifika för automationsföraren eller fjärrgränssnittet:
Webbläsarspecifika kapacitetsutökningar
goog:chromeOptions
: Chromedriver utökningar, endast tillämpliga för testning i Chromemoz:firefoxOptions
: Geckodriver utökningar, endast tillämpliga för testning i Firefoxms:edgeOptions
: EdgeOptions för att specificera miljön när du använder EdgeDriver för att testa Chromium Edge
Molnleverantörers kapacitetsutökningar
sauce:options
: Sauce Labsbstack:options
: BrowserStacktb:options
: TestingBot- och många fler...
Automatiseringsmotorns kapacitetsutökningar
WebdriverIO-kapaciteter för att hantera webbläsardrivrutinsalternativ
WebdriverIO hanterar installation och körning av webbläsardrivrutiner åt dig. WebdriverIO använder en anpassad kapacitet som låter dig skicka in parametrar till drivrutinen.
wdio:chromedriverOptions
Specifika alternativ som skickas till Chromedriver vid start.
wdio:geckodriverOptions
Specifika alternativ som skickas till Geckodriver vid start.
wdio:edgedriverOptions
Specifika alternativ som skickas till Edgedriver vid start.
wdio:safaridriverOptions
Specifika alternativ som skickas till Safari vid start.
wdio:maxInstances
Maximalt antal totala parallellt körande arbetare för den specifika webbläsaren/kapaciteten. Har företräde framför maxInstances och maxInstancesPerCapability.
Typ: number
wdio:specs
Definiera specifikationer för testkörning för den webbläsaren/kapaciteten. Samma som det vanliga specs
-konfigurationsalternativet, men specifikt för webbläsaren/kapaciteten. Har företräde framför specs
.
Typ: (String | String[])[]
wdio:exclude
Exkludera specifikationer från testkörning för den webbläsaren/kapaciteten. Samma som det vanliga exclude
-konfigurationsalternativet, men specifikt för webbläsaren/kapaciteten. Exkluderar efter att det globala exclude
-konfigurationsalternativet har tillämpats.
Typ: String[]
wdio:enforceWebDriverClassic
Som standard försöker WebdriverIO upprätta en WebDriver Bidi-session. Om du inte föredrar det kan du ställa in denna flagga för att inaktivera detta beteende.
Typ: boolean
Vanliga drivrutinsalternativ
Medan alla drivrutiner erbjuder olika parametrar för konfiguration, finns det några gemensamma som WebdriverIO förstår och använder för att ställa in din drivrutin eller webbläsare:
cacheDir
Sökvägen till roten av cachekatalogen. Denna katalog används för att lagra alla drivrutiner som laddas ner när man försöker starta en session.
Typ: string
Standard: process.env.WEBDRIVER_CACHE_DIR || os.tmpdir()
binary
Sökväg till en anpassad drivrutinsbinär. Om den är inställd kommer WebdriverIO inte att försöka ladda ner en drivrutin utan kommer att använda den som tillhandahålls av denna sökväg. Se till att drivrutinen är kompatibel med webbläsaren du använder.
Du kan ange denna sökväg via miljövariablerna CHROMEDRIVER_PATH
, GECKODRIVER_PATH
eller EDGEDRIVER_PATH
.
Typ: string
Om drivrutinens binary
är inställd kommer WebdriverIO inte att försöka ladda ner en drivrutin utan kommer att använda den som tillhandahålls av denna sökväg. Se till att drivrutinen är kompatibel med webbläsaren du använder.
Webbläsarspecifika drivrutinsalternativ
För att skicka vidare alternativ till drivrutinen kan du använda följande anpassade kapaciteter:
- Chrome eller Chromium:
wdio:chromedriverOptions
- Firefox:
wdio:geckodriverOptions
- Microsoft Edge:
wdio:edgedriverOptions
- Safari:
wdio:safaridriverOptions
- wdio:chromedriverOptions
- wdio:geckodriverOptions
- wdio:edgedriverOptions
- wdio:safaridriverOptions
adbPort
Porten som ADB-drivrutinen ska köras på.
Exempel: 9515
Typ: number
urlBase
Bas-URL-prefix för kommandon, t.ex. wd/url
.
Exempel: /
Typ: string
logPath
Skriv serverloggen till fil istället för stderr, ökar loggnivån till INFO
Typ: string
logLevel
Ställ in loggnivå. Möjliga alternativ ALL
, DEBUG
, INFO
, WARNING
, SEVERE
, OFF
.
Typ: string
verbose
Logga utförligt (motsvarande --log-level=ALL
)
Typ: boolean
silent
Logga ingenting (motsvarande --log-level=OFF
)
Typ: boolean
appendLog
Lägg till i loggfilen istället för att skriva över den.
Typ: boolean
replayable
Logga utförligt och trunkera inte långa strängar så att loggen kan spelas upp (experimentell).
Typ: boolean
readableTimestamp
Lägg till läsbara tidsstämplar till loggen.
Typ: boolean
enableChromeLogs
Visa loggar från webbläsaren (åsidosätter andra loggningsalternativ).
Typ: boolean
bidiMapperPath
Anpassad bidi-mappare sökväg.
Typ: string
allowedIps
Kommaseparerad vitlista av fjärr-IP-adresser som tillåts ansluta till EdgeDriver.
Typ: string[]
Standard: ['']
allowedOrigins
Kommaseparerad vitlista av förfrågningsursprung som tillåts ansluta till EdgeDriver. Att använda *
för att tillåta alla värdursprung är farligt!
Typ: string[]
Standard: ['*']
spawnOpts
Alternativ som ska skickas till drivrutinsprocessen.
Typ: SpawnOptionsWithoutStdio | SpawnOptionsWithStdioTuple<StdioOption, StdioOption, StdioOption>
Standard: undefined
Se alla Geckodriver-alternativ i det officiella drivrutinspaketet.
Se alla Edgedriver-alternativ i det officiella drivrutinspaketet.
Se alla Safaridriver-alternativ i det officiella drivrutinspaketet.
Särskilda kapaciteter för specifika användningsfall
Detta är en lista med exempel som visar vilka kapaciteter som behöver tillämpas för att uppnå ett visst användningsfall.
Kör webbläsare headless
Att köra en headless-webbläsare innebär att köra en webbläsarinstans utan fönster eller användargränssnitt. Detta används mest inom CI/CD-miljöer där ingen skärm används. För att köra en webbläsare i headless-läge, tillämpa följande kapaciteter:
- Chrome
- Firefox
- Microsoft Edge
- Safari
{
browserName: 'chrome', // eller 'chromium'
'goog:chromeOptions': {
args: ['headless', 'disable-gpu']
}
}
browserName: 'firefox',
'moz:firefoxOptions': {
args: ['-headless']
}
browserName: 'msedge',
'ms:edgeOptions': {
args: ['--headless']
}
Det verkar som att Safari inte stöder körning i headless-läge.
Automatisera olika webbläsarkanaler
Om du vill testa en webbläsarversion som ännu inte har släppts som stabil, t.ex. Chrome Canary, kan du göra det genom att ställa in kapaciteter och peka på den webbläsare du vill starta, t.ex.:
- Chrome
- Firefox
- Microsoft Edge
- Safari
När du testar på Chrome kommer WebdriverIO automatiskt att ladda ner den önskade webbläsarversionen och drivrutinen åt dig baserat på den definierade browserVersion
, t.ex.:
{
browserName: 'chrome', // eller 'chromium'
browserVersion: '116' // eller '116.0.5845.96', 'stable', 'dev', 'canary', 'beta' eller 'latest' (samma som 'canary')
}
Om du vill testa en manuellt nedladdad webbläsare kan du ange en binär sökväg till webbläsaren via:
{
browserName: 'chrome', // eller 'chromium'
'goog:chromeOptions': {
binary: '/Applications/Google\ Chrome\ Canary.app/Contents/MacOS/Google\ Chrome\ Canary'
}
}
Dessutom, om du vill använda en manuellt nedladdad drivrutin, kan du ange en binär sökväg till drivrutinen via:
{
browserName: 'chrome', // eller 'chromium'
'wdio:chromedriverOptions': {
binary: '/path/to/chromdriver'
}
}
När du testar på Firefox kommer WebdriverIO automatiskt att ladda ner den önskade webbläsarversionen och drivrutinen åt dig baserat på den definierade browserVersion
, t.ex.:
{
browserName: 'firefox',
browserVersion: '119.0a1' // eller 'latest'
}
Om du vill testa en manuellt nedladdad version kan du ange en binär sökväg till webbläsaren via:
{
browserName: 'firefox',
'moz:firefoxOptions': {
binary: '/Applications/Firefox\ Nightly.app/Contents/MacOS/firefox'
}
}
Dessutom, om du vill använda en manuellt nedladdad drivrutin, kan du ange en binär sökväg till drivrutinen via:
{
browserName: 'firefox',
'wdio:geckodriverOptions': {
binary: '/path/to/geckodriver'
}
}
När du testar på Microsoft Edge, se till att du har den önskade webbläsarversionen installerad på din maskin. Du kan peka WebdriverIO till webbläsaren som ska köras via:
{
browserName: 'msedge',
'ms:edgeOptions': {
binary: '/Applications/Microsoft\ Edge\ Canary.app/Contents/MacOS/Microsoft\ Edge\ Canary'
}
}
WebdriverIO kommer automatiskt att ladda ner den önskade drivrutinsversionen åt dig baserat på den definierade browserVersion
, t.ex.:
{
browserName: 'msedge',
browserVersion: '109' // eller '109.0.1467.0', 'stable', 'dev', 'canary', 'beta'
}
Dessutom, om du vill använda en manuellt nedladdad drivrutin, kan du ange en binär sökväg till drivrutinen via:
{
browserName: 'msedge',
'wdio:edgedriverOptions': {
binary: '/path/to/msedgedriver'
}
}
När du testar på Safari, se till att du har Safari Technology Preview installerad på din maskin. Du kan peka WebdriverIO till den versionen via:
{
browserName: 'safari technology preview'
}
Utöka anpassade kapaciteter
Om du vill definiera din egen uppsättning kapaciteter för att t.ex. lagra godtycklig data som ska användas i testerna för den specifika kapaciteten, kan du göra det genom att t.ex. ställa in:
export const config = {
// ...
capabilities: [{
browserName: 'chrome',
'custom:caps': {
// anpassade konfigurationer
}
}]
}
Det rekommenderas att följa W3C-protokollet när det gäller namngivning av kapaciteter, vilket kräver ett :
(kolon) tecken, som betecknar ett implementationsspecifikt namnområde. I dina tester kan du komma åt din anpassade kapacitet genom, t.ex.:
browser.capabilities['custom:caps']
För att säkerställa typsäkerhet kan du utöka WebdriverIOs kapacitetsgränssnitt via:
declare global {
namespace WebdriverIO {
interface Capabilities {
'custom:caps': {
// ...
}
}
}
}