Zum Hauptinhalt springen

Funktionen

Eine Capability (Funktion) ist eine Definition für eine Remote-Schnittstelle. Sie hilft WebdriverIO zu verstehen, in welcher Browser- oder Mobilumgebung Sie Ihre Tests ausführen möchten. Capabilities sind weniger entscheidend, wenn Sie Tests lokal entwickeln, da Sie sie meistens auf einer Remote-Schnittstelle ausführen, werden aber wichtiger, wenn Sie eine große Anzahl von Integrationstests in CI/CD ausführen.

Info

Das Format eines Capability-Objekts ist durch die WebDriver-Spezifikation genau definiert. Der WebdriverIO-Testrunner wird frühzeitig fehlschlagen, wenn benutzerdefinierte Capabilities nicht dieser Spezifikation entsprechen.

Benutzerdefinierte Capabilities

Während die Anzahl der fest definierten Capabilities sehr gering ist, kann jeder benutzerdefinierte Capabilities bereitstellen und akzeptieren, die spezifisch für den Automatisierungstreiber oder die Remote-Schnittstelle sind:

Browserspezifische Capability-Erweiterungen

  • goog:chromeOptions: Chromedriver-Erweiterungen, nur anwendbar für Tests in Chrome
  • moz:firefoxOptions: Geckodriver-Erweiterungen, nur anwendbar für Tests in Firefox
  • ms:edgeOptions: EdgeOptions zur Festlegung der Umgebung bei Verwendung von EdgeDriver für Tests in Chromium Edge

Cloud-Anbieter Capability-Erweiterungen

Automatisierungs-Engine Capability-Erweiterungen

WebdriverIO-Capabilities zur Verwaltung von Browser-Treiberoptionen

WebdriverIO verwaltet die Installation und Ausführung des Browser-Treibers für Sie. WebdriverIO verwendet eine benutzerdefinierte Capability, die es Ihnen ermöglicht, Parameter an den Treiber zu übergeben.

wdio:chromedriverOptions

Spezifische Optionen, die beim Start an Chromedriver übergeben werden.

wdio:geckodriverOptions

Spezifische Optionen, die beim Start an Geckodriver übergeben werden.

wdio:edgedriverOptions

Spezifische Optionen, die beim Start an Edgedriver übergeben werden.

wdio:safaridriverOptions

Spezifische Optionen, die beim Start an Safari übergeben werden.

wdio:maxInstances

Maximale Anzahl der parallel laufenden Worker für den spezifischen Browser/die spezifische Capability. Hat Vorrang vor maxInstances und maxInstancesPerCapability.

Typ: number

wdio:specs

Definiert Specs für die Testausführung für diesen Browser/diese Capability. Gleich wie die reguläre specs-Konfigurationsoption, aber spezifisch für den Browser/die Capability. Hat Vorrang vor specs.

Typ: (String | String[])[]

wdio:exclude

Schließt Specs von der Testausführung für diesen Browser/diese Capability aus. Gleich wie die reguläre exclude-Konfigurationsoption, aber spezifisch für den Browser/die Capability. Schließt nach Anwendung der globalen exclude-Konfigurationsoption aus.

Typ: String[]

wdio:enforceWebDriverClassic

Standardmäßig versucht WebdriverIO, eine WebDriver Bidi-Sitzung einzurichten. Wenn Sie das nicht bevorzugen, können Sie dieses Flag setzen, um dieses Verhalten zu deaktivieren.

Typ: boolean

Allgemeine Treiberoptionen

Während alle Treiber unterschiedliche Parameter für die Konfiguration bieten, gibt es einige gemeinsame, die WebdriverIO versteht und zur Einrichtung Ihres Treibers oder Browsers verwendet:

cacheDir

Der Pfad zum Stammverzeichnis des Cache-Verzeichnisses. Dieses Verzeichnis wird verwendet, um alle Treiber zu speichern, die heruntergeladen werden, wenn versucht wird, eine Sitzung zu starten.

Typ: string
Standard: process.env.WEBDRIVER_CACHE_DIR || os.tmpdir()

binary

Pfad zu einer benutzerdefinierten Treiber-Binärdatei. Wenn gesetzt, versucht WebdriverIO nicht, einen Treiber herunterzuladen, sondern verwendet den durch diesen Pfad bereitgestellten. Stellen Sie sicher, dass der Treiber mit dem von Ihnen verwendeten Browser kompatibel ist.

Sie können diesen Pfad über die Umgebungsvariablen CHROMEDRIVER_PATH, GECKODRIVER_PATH oder EDGEDRIVER_PATH angeben.

Typ: string

Achtung

Wenn der Treiber binary gesetzt ist, versucht WebdriverIO nicht, einen Treiber herunterzuladen, sondern verwendet den durch diesen Pfad bereitgestellten. Stellen Sie sicher, dass der Treiber mit dem von Ihnen verwendeten Browser kompatibel ist.

Browser-spezifische Treiberoptionen

Um Optionen an den Treiber weiterzuleiten, können Sie die folgenden benutzerdefinierten Capabilities verwenden:

  • Chrome oder Chromium: wdio:chromedriverOptions
  • Firefox: wdio:geckodriverOptions
  • Microsoft Egde: wdio:edgedriverOptions
  • Safari: wdio:safaridriverOptions
adbPort

Der Port, auf dem der ADB-Treiber laufen soll.

Beispiel: 9515

Typ: number

urlBase

Basis-URL-Pfadpräfix für Befehle, z.B. wd/url.

Beispiel: /

Typ: string

logPath

Serverlog in Datei statt nach stderr schreiben, erhöht Log-Level auf INFO

Typ: string

logLevel

Log-Level festlegen. Mögliche Optionen sind ALL, DEBUG, INFO, WARNING, SEVERE, OFF.

Typ: string

verbose

Ausführlich loggen (entspricht --log-level=ALL)

Typ: boolean

silent

Nichts loggen (entspricht --log-level=OFF)

Typ: boolean

appendLog

Log-Datei anhängen, anstatt sie neu zu schreiben.

Typ: boolean

replayable

Ausführlich loggen und lange Zeichenketten nicht abschneiden, sodass das Log wiedergegeben werden kann (experimentell).

Typ: boolean

readableTimestamp

Lesbare Zeitstempel zum Log hinzufügen.

Typ: boolean

enableChromeLogs

Logs vom Browser anzeigen (überschreibt andere Logging-Optionen).

Typ: boolean

bidiMapperPath

Benutzerdefinierter Bidi-Mapper-Pfad.

Typ: string

allowedIps

Durch Kommas getrennte Allowlist von Remote-IP-Adressen, die eine Verbindung zu EdgeDriver herstellen dürfen.

Typ: string[]
Standard: ['']

allowedOrigins

Durch Kommas getrennte Allowlist von Anforderungsursprüngen, die eine Verbindung zu EdgeDriver herstellen dürfen. Die Verwendung von * zur Erlaubnis eines beliebigen Host-Ursprungs ist gefährlich!

Typ: string[]
Standard: ['*']

spawnOpts

Optionen, die an den Treiberprozess übergeben werden sollen.

Typ: SpawnOptionsWithoutStdio | SpawnOptionsWithStdioTuple<StdioOption, StdioOption, StdioOption>
Standard: undefined

Spezielle Capabilities für bestimmte Anwendungsfälle

Dies ist eine Liste von Beispielen, die zeigen, welche Capabilities angewendet werden müssen, um einen bestimmten Anwendungsfall zu erreichen.

Browser im Headless-Modus ausführen

Einen Browser im Headless-Modus auszuführen bedeutet, eine Browser-Instanz ohne Fenster oder Benutzeroberfläche auszuführen. Dies wird meist in CI/CD-Umgebungen verwendet, in denen kein Display genutzt wird. Um einen Browser im Headless-Modus auszuführen, wenden Sie die folgenden Capabilities an:

{
browserName: 'chrome', // oder 'chromium'
'goog:chromeOptions': {
args: ['headless', 'disable-gpu']
}
}

Verschiedene Browser-Kanäle automatisieren

Wenn Sie eine Browser-Version testen möchten, die noch nicht als stabile Version veröffentlicht wurde, z.B. Chrome Canary, können Sie dies tun, indem Sie Capabilities setzen und auf den Browser verweisen, den Sie starten möchten, z.B.:

Beim Testen in Chrome wird WebdriverIO automatisch die gewünschte Browser-Version und den Treiber basierend auf der definierten browserVersion herunterladen, z.B.:

{
browserName: 'chrome', // oder 'chromium'
browserVersion: '116' // oder '116.0.5845.96', 'stable', 'dev', 'canary', 'beta' oder 'latest' (gleich wie 'canary')
}

Wenn Sie einen manuell heruntergeladenen Browser testen möchten, können Sie einen binären Pfad zum Browser angeben über:

{
browserName: 'chrome', // oder 'chromium'
'goog:chromeOptions': {
binary: '/Applications/Google\ Chrome\ Canary.app/Contents/MacOS/Google\ Chrome\ Canary'
}
}

Zusätzlich können Sie, wenn Sie einen manuell heruntergeladenen Treiber verwenden möchten, einen binären Pfad zum Treiber angeben über:

{
browserName: 'chrome', // oder 'chromium'
'wdio:chromedriverOptions': {
binary: '/path/to/chromdriver'
}
}

Benutzerdefinierte Capabilities erweitern

Wenn Sie Ihren eigenen Satz von Capabilities definieren möchten, um z.B. beliebige Daten zu speichern, die innerhalb der Tests für diese spezifische Capability verwendet werden sollen, können Sie dies tun, indem Sie z.B. Folgendes setzen:

export const config = {
// ...
capabilities: [{
browserName: 'chrome',
'custom:caps': {
// benutzerdefinierte Konfigurationen
}
}]
}

Es wird empfohlen, dem W3C-Protokoll zu folgen, wenn es um die Benennung von Capabilities geht, was ein : (Doppelpunkt) Zeichen erfordert, das einen implementierungsspezifischen Namespace bezeichnet. In Ihren Tests können Sie auf Ihre benutzerdefinierte Capability zugreifen durch, z.B.:

browser.capabilities['custom:caps']

Um Typsicherheit zu gewährleisten, können Sie die Capability-Schnittstelle von WebdriverIO erweitern über:

declare global {
namespace WebdriverIO {
interface Capabilities {
'custom:caps': {
// ...
}
}
}
}

Welcome! How can I help?

WebdriverIO AI Copilot