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

Vorsicht

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