Zum Hauptinhalt springen

Fähigkeiten

Eine Fähigkeit (Capability) ist eine Definition für eine Remote-Schnittstelle. Sie hilft WebdriverIO zu verstehen, in welcher Browser- oder Mobilumgebung Tests ausgeführt werden sollen. Capabilities sind weniger wichtig bei der lokalen Testentwicklung, da man meistens auf einer einzigen Remote-Schnittstelle arbeitet, gewinnen aber an Bedeutung, wenn eine große Anzahl von Integrationstests in CI/CD ausgeführt wird.

Info

Das Format eines Capability-Objekts ist klar definiert durch die WebDriver-Spezifikation. 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 mit Chromium Edge

Cloud-Anbieter Capability-Erweiterungen

Automatisierungs-Engine Capability-Erweiterungen

WebdriverIO Capabilities zur Verwaltung von Browser-Treiberoptionen

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

wdio:chromedriverOptions

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

wdio:geckodriverOptions

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

wdio:edgedriverOptions

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

wdio:safaridriverOptions

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

wdio:maxInstances

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

Typ: number

wdio:specs

Definiert Spezifikationen für die Testausführung für diesen Browser/Capability. Entspricht der regulären specs-Konfigurationsoption, ist aber spezifisch für den Browser/Capability. Hat Vorrang vor specs.

Typ: (String | String[])[]

wdio:exclude

Schließt Spezifikationen von der Testausführung für diesen Browser/Capability aus. Entspricht der regulären exclude-Konfigurationsoption, ist aber spezifisch für den Browser/Capability. Hat Vorrang vor exclude.

Typ: String[]

wdio:enforceWebDriverClassic

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

Typ: boolean

Gemeinsame Treiberoptionen

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

cacheDir

Der Pfad zum Stammverzeichnis des Cache. Dieses Verzeichnis wird verwendet, um alle Treiber zu speichern, die beim Versuch, eine Sitzung zu starten, heruntergeladen werden.

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

binary

Pfad zu einer benutzerdefinierten Treiberbinärdatei. Wenn gesetzt, wird WebdriverIO keinen Treiber herunterladen, sondern den in diesem Pfad angegebenen 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 angeben.

Typ: string

Achtung

Wenn der Treiber binary gesetzt ist, wird WebdriverIO keinen Treiber herunterladen, sondern den über diesen Pfad bereitgestellten verwenden. Stellen Sie sicher, dass der Treiber mit dem verwendeten Browser kompatibel ist.

Browserspezifische Treiberoptionen

Um Optionen an den Treiber weiterzugeben, 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

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

Beispiel: /

Typ: string

logPath

Serverprotokoll in Datei statt Standardfehlerausgabe 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ührliches Protokollieren (entspricht --log-level=ALL)

Typ: boolean

silent

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

Typ: boolean

appendLog

Protokolldatei anhängen, statt sie zu überschreiben.

Typ: boolean

replayable

Ausführlich protokollieren und lange Strings nicht kürzen, sodass das Protokoll wiedergegeben werden kann (experimentell).

Typ: boolean

readableTimestamp

Lesbare Zeitstempel zum Protokoll hinzufügen.

Typ: boolean

enableChromeLogs

Protokolle aus dem Browser anzeigen (überschreibt andere Protokollierungsoptionen).

Typ: boolean

bidiMapperPath

Benutzerdefinierter Bidi-Mapper-Pfad.

Typ: string

allowedIps

Kommagetrennte Liste von Remote-IP-Adressen, die eine Verbindung zu EdgeDriver herstellen dürfen.

Typ: string[]
Standard: ['']

allowedOrigins

Kommagetrennte Liste von Anfrage-Ursprüngen, die eine Verbindung zu EdgeDriver herstellen dürfen. Die Verwendung von * zur Zulassung beliebiger Host-Ursprünge 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

Ein Browser im Headless-Modus bedeutet, eine Browser-Instanz ohne Fenster oder Benutzeroberfläche auszuführen. Dies wird meist 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 Browser-Version testen möchten, die noch nicht als stabile Version veröffentlicht wurde, z.B. Chrome Canary, können Sie dies durch das Setzen von Capabilities und den Verweis auf den gewünschten Browser tun, z.B.:

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

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

Wenn Sie einen manuell heruntergeladenen Browser testen möchten, können Sie einen Binärpfad zum Browser angeben:

{
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ärpfad zum Treiber angeben:

{
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 in den Tests für diese spezifische Capability verwendet werden, 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 bei der Benennung von Capabilities zu folgen, das ein : (Doppelpunkt) erfordert, um einen implementierungsspezifischen Namespace anzugeben. In Ihren Tests können Sie auf Ihre benutzerdefinierte Capability zugreifen durch:

browser.capabilities['custom:caps']

Um Typsicherheit zu gewährleisten, können Sie WebdriverIOs Capability-Schnittstelle erweitern:

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

Welcome! How can I help?

WebdriverIO AI Copilot