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.
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 anwendbarmoz:firefoxOptions: Geckodriver-Erweiterungen, nur für Tests in Firefox anwendbarms:edgeOptions: EdgeOptions zum Spezifizieren der Umgebung bei der Verwendung von EdgeDriver für Tests mit Chromium Edge
Cloud-Anbieter Capability-Erweiterungen
sauce:options: Sauce Labsbstack:options: BrowserStacktb:options: TestingBotLT:Options: LambdaTest- und viele mehr...
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
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
- wdio:chromedriverOptions
- wdio:geckodriverOptions
- wdio:edgedriverOptions
- 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
Siehe alle Geckodriver-Optionen im offiziellen Treiberpaket.
Siehe alle Edgedriver-Optionen im offiziellen Treiberpaket.
Siehe alle Safaridriver-Optionen im offiziellen Treiberpaket.
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:
- Chrome
- Firefox
- Microsoft Edge
- Safari
{
browserName: 'chrome', // oder 'chromium'
'goog:chromeOptions': {
args: ['headless', 'disable-gpu']
}
}
browserName: 'firefox',
'moz:firefoxOptions': {
args: ['-headless']
}
browserName: 'msedge',
'ms:edgeOptions': {
args: ['--headless']
}
Es scheint, dass Safari keine Unterstützung für den Headless-Modus bietet.
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.:
- Chrome
- Firefox
- Microsoft Edge
- Safari
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'
}
}
Bei Tests mit Firefox wird WebdriverIO automatisch die gewünschte Browserversion und den Treiber basierend auf der definierten browserVersion herunterladen, z.B.:
{
browserName: 'firefox',
browserVersion: '119.0a1' // oder 'latest'
}
Wenn Sie eine manuell heruntergeladene Version testen möchten, können Sie einen binären Pfad zum Browser angeben über:
{
browserName: 'firefox',
'moz:firefoxOptions': {
binary: '/Applications/Firefox\ Nightly.app/Contents/MacOS/firefox'
}
}
Wenn Sie zusätzlich einen manuell heruntergeladenen Treiber verwenden möchten, können Sie einen binären Pfad zum Treiber angeben über:
{
browserName: 'firefox',
'wdio:geckodriverOptions': {
binary: '/path/to/geckodriver'
}
}
Bei Tests mit Microsoft Edge stellen Sie sicher, dass Sie die gewünschte Browserversion auf Ihrem Computer installiert haben. Sie können WebdriverIO den auszuführenden Browser angeben über:
{
browserName: 'msedge',
'ms:edgeOptions': {
binary: '/Applications/Microsoft\ Edge\ Canary.app/Contents/MacOS/Microsoft\ Edge\ Canary'
}
}
WebdriverIO wird automatisch die gewünschte Treiberversion basierend auf der definierten browserVersion herunterladen, z.B.:
{
browserName: 'msedge',
browserVersion: '109' // oder '109.0.1467.0', 'stable', 'dev', 'canary', 'beta'
}
Wenn Sie zusätzlich einen manuell heruntergeladenen Treiber verwenden möchten, können Sie einen binären Pfad zum Treiber angeben über:
{
browserName: 'msedge',
'wdio:edgedriverOptions': {
binary: '/path/to/msedgedriver'
}
}
Bei Tests mit Safari stellen Sie sicher, dass Sie die Safari Technology Preview auf Ihrem Computer installiert haben. Sie können WebdriverIO auf diese Version verweisen über:
{
browserName: 'safari technology preview'
}
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': {
// ...
}
}
}
}