Zum Hauptinhalt springen

Fähigkeiten

Eine Capability 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 meistens auf einer Remote-Schnittstelle laufen, 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:

Browser-spezifische Capability-Erweiterungen

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

Cloud-Anbieter Capability-Erweiterungen

Automatisierungsmotor Capability-Erweiterungen

WebdriverIO Capabilities zur Verwaltung von Browser-Treiberoptionen

WebdriverIO übernimmt die Installation und Ausführung des Browser-Treibers für Sie. WebdriverIO verwendet eine benutzerdefinierte Capability, mit der Sie Parameter an den Treiber übergeben können.

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 paralleler Worker für den spezifischen Browser/Capability. Hat Vorrang vor maxInstances und maxInstancesPerCapability.

Typ: number

wdio:specs

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

Typ: (String | String[])[]

wdio:exclude

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

Typ: String[]

wdio:enforceWebDriverClassic

Standardmäßig versucht WebdriverIO, eine WebDriver Bidi-Sitzung zu etablieren. 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 anbieten, 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, wird WebdriverIO nicht versuchen, einen Treiber herunterzuladen, sondern den von diesem Pfad bereitgestellten verwenden. Stellen Sie sicher, dass der Treiber mit dem verwendeten Browser kompatibel ist.

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

Typ: string

Achtung

Wenn der Treiber binary festgelegt ist, wird WebdriverIO nicht versuchen, einen Treiber herunterzuladen, sondern den von diesem Pfad bereitgestellten verwenden. Stellen Sie sicher, dass der Treiber mit dem 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 Edge: 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 stderr schreiben, erhöht Log-Level auf INFO

Typ: string

logLevel

Log-Level festlegen. Mögliche Optionen 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 zu überschreiben.

Typ: boolean

replayable

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

Typ: boolean

readableTimestamp

Lesbare Zeitstempel zum Log hinzufügen.

Typ: boolean

enableChromeLogs

Logs aus dem 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 sich mit EdgeDriver verbinden dürfen.

Typ: string[]
Standard: ['']

allowedOrigins

Durch Kommas getrennte Allowlist von Anfrage-Ursprüngen, die sich mit EdgeDriver verbinden dürfen. Die Verwendung von * zur Erlaubnis jedes 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 zeigt, 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 UI auszuführen. Dies wird hauptsächlich in CI/CD-Umgebungen verwendet, in denen kein Display verwendet 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 Browserversion 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.:

Bei Tests mit Chrome wird WebdriverIO automatisch die gewünschte Browserversion 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'
}
}

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

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

Benutzerdefinierte Capabilities erweitern

Wenn Sie Ihre eigenen 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. 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, das einen : (Doppelpunkt) Zeichen erfordert, das einen implementierungsspezifischen Namespace kennzeichnet. Innerhalb Ihrer Tests können Sie auf Ihre benutzerdefinierte Capability zugreifen durch, z.B.:

browser.capabilities['custom:caps']

Um die Typsicherheit zu gewährleisten, können Sie WebdriverIOs Capability-Interface erweitern über:

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

Welcome! How can I help?

WebdriverIO AI Copilot