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