Konfiguration
Basierend auf dem Setup-Typ (z. B. bei Verwendung der reinen Protokollbindungen, WebdriverIO als eigenständiges Paket oder dem WDIO Testrunner) steht eine andere Gruppe von Optionen zur Verfügung, um die Umgebung zu steuern.
WebDriver Optionen
Die folgenden Optionen werden definiert, wenn das webdriver Protokollpaket verwendet wird:
protocol
Protokoll, das bei der Kommunikation mit dem Treiber-Server verwendet wird.
Typ: String
Standard: http
hostname
Host Ihres Treiber-Servers.
Typ: String
Standard: 0.0.0.0
port
Port, auf dem Ihr Treiber-Server läuft.
Typ: Number
Standard: undefined
path
Pfad zum Endpunkt des Treiber-Servers.
Typ: String
Standard: /
queryParams
Abfrageparameter, die an den Treiber-Server weitergeleitet werden.
Typ: Object
Standard: undefined
user
Ihr Cloud-Service-Benutzername (funktioniert nur für Sauce Labs, Browserstack, TestingBot oder TestMu AI Konten). Wenn gesetzt, wird WebdriverIO automatisch Verbindungsoptionen für Sie einstellen. Wenn Sie keinen Cloud-Provider verwenden, kann dies zur Authentifizierung bei jedem anderen WebDriver-Backend verwendet werden.
Typ: String
Standard: undefined
key
Ihr Cloud-Service-Zugriffsschlüssel oder geheimer Schlüssel (funktioniert nur für Sauce Labs, Browserstack, TestingBot oder TestMu AI Konten). Wenn gesetzt, wird WebdriverIO automatisch Verbindungsoptionen für Sie einstellen. Wenn Sie keinen Cloud-Provider verwenden, kann dies zur Authentifizierung bei jedem anderen WebDriver-Backend verwendet werden.
Typ: String
Standard: undefined
capabilities
Definiert die Fähigkeiten, die Sie in Ihrer WebDriver-Sitzung ausführen möchten. Weitere Details finden Sie im WebDriver-Protokoll. Wenn Sie einen älteren Treiber verwenden, der das WebDriver-Protokoll nicht unterstützt, müssen Sie die JSONWireProtocol-Fähigkeiten verwenden, um eine Sitzung erfolgreich auszuführen.
Neben den WebDriver-basierten Fähigkeiten können Sie browser- und anbieterspezifische Optionen anwenden, die eine tiefere Konfiguration des Remote-Browsers oder -Geräts ermöglichen. Diese sind in den entsprechenden Anbieter-Dokumentationen dokumentiert, z.B.:
goog:chromeOptions: für Google Chromemoz:firefoxOptions: für Mozilla Firefoxms:edgeOptions: für Microsoft Edgesauce:options: für Sauce Labsbstack:options: für BrowserStackselenoid:options: für Selenoid
Zusätzlich ist der Sauce Labs Automated Test Configurator ein nützliches Tool, das Ihnen hilft, dieses Objekt durch Zusammenklicken Ihrer gewünschten Fähigkeiten zu erstellen.
Typ: Object
Standard: null
Beispiel:
{
browserName: 'chrome', // optionen: `chrome`, `edge`, `firefox`, `safari`
browserVersion: '27.0', // Browser-Version
platformName: 'Windows 10' // OS-Plattform
}
Wenn Sie Web- oder native Tests auf mobilen Geräten ausführen, unterscheiden sich die capabilities vom WebDriver-Protokoll. Weitere Details finden Sie in der Appium-Dokumentation.
logLevel
Ausführlichkeitsgrad der Protokollierung.
Typ: String
Standard: info
Optionen: trace | debug | info | warn | error | silent
outputDir
Verzeichnis zum Speichern aller Testrunner-Protokolldateien (einschließlich Reporter-Logs und wdio-Logs). Wenn nicht gesetzt, werden alle Logs an stdout gestreamt. Da die meisten Reporter dafür gemacht sind, in stdout zu schreiben, empfiehlt es sich, diese Option nur für bestimmte Reporter zu verwenden, bei denen es sinnvoller ist, Berichte in eine Datei zu schreiben (wie z.B. der junit-Reporter).
Im Standalone-Modus wird nur das wdio-Log von WebdriverIO generiert.
Typ: String
Standard: null
connectionRetryTimeout
Timeout für jede WebDriver-Anfrage an einen Treiber oder ein Grid.
Typ: Number
Standard: 120000
connectionRetryCount
Maximale Anzahl an Wiederholungsversuchen für Anfragen an den Selenium-Server.
Typ: Number
Standard: 3
agent
Ermöglicht die Verwendung eines benutzerdefinierten http/https/http2 Agenten für Anfragen.
Typ: Object
Standard:
{
http: new http.Agent({ keepAlive: true }),
https: new https.Agent({ keepAlive: true })
}
headers
Spezifiziert benutzerdefinierte headers, die an jede WebDriver-Anfrage übergeben werden. Wenn Ihr Selenium Grid eine Basic Authentication erfordert, empfehlen wir, einen Authorization-Header über diese Option zu übergeben, um Ihre WebDriver-Anfragen zu authentifizieren, z.B.:
import { Buffer } from 'buffer';
// Read the username and password from environment variables
const username = process.env.SELENIUM_GRID_USERNAME;
const password = process.env.SELENIUM_GRID_PASSWORD;
// Combine the username and password with a colon separator
const credentials = `${username}:${password}`;
// Encode the credentials using Base64
const encodedCredentials = Buffer.from(credentials).toString('base64');
export const config: WebdriverIO.Config = {
// ...
headers: {
Authorization: `Basic ${encodedCredentials}`
}
// ...
}
Typ: Object
Standard: {}
transformRequest
Funktion, die HTTP-Anfrageparameter abfängt, bevor eine WebDriver-Anfrage gestellt wird.
Typ: (RequestOptions) => RequestOptions
Standard: keine
transformResponse
Funktion, die HTTP-Antwortobjekte abfängt, nachdem eine WebDriver-Antwort eingetroffen ist. Der Funktion wird das ursprüngliche Antwortobjekt als erstes und die entsprechenden RequestOptions als zweites Argument übergeben.
Typ: (Response, RequestOptions) => Response
Standard: keine
strictSSL
Ob es erforderlich ist, dass das SSL-Zertifikat gültig ist.
Es kann über Umgebungsvariablen als STRICT_SSL oder strict_ssl gesetzt werden.
Typ: Boolean
Standard: true
enableDirectConnect
Ob die Appium-Direktverbindungsfunktion aktiviert werden soll. Es hat keine Wirkung, wenn die Antwort nicht die richtigen Schlüssel enthält, während das Flag aktiviert ist.
Typ: Boolean
Standard: true
cacheDir
Der Pfad zum Stammverzeichnis des Caches. 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()
maskingPatterns
Für eine sicherere Protokollierung können reguläre Ausdrücke mit maskingPatterns festgelegt werden, um sensible Informationen aus dem Protokoll zu verschleiern.
- Das Stringformat ist ein regulärer Ausdruck mit oder ohne Flags (z.B.
/.../i) und durch Kommas getrennt für mehrere reguläre Ausdrücke. - Weitere Details zu Maskierungsmustern finden Sie im Abschnitt zu Maskierungsmustern im WDIO Logger README.
Typ: String
Standard: undefined
Beispiel:
{
maskingPatterns: '/--key=([^ ]*)/i,/RESULT (.*)/'
}
WebdriverIO
Die folgenden Optionen (einschließlich der oben aufgeführten) können mit WebdriverIO im Standalone-Modus verwendet werden:
automationProtocol
Definieren Sie das Protokoll, das Sie für Ihre Browser-Automatisierung verwenden möchten. Derzeit wird nur webdriver unterstützt, da es die Haupttechnologie für die Browser-Automatisierung ist, die WebdriverIO verwendet.
Wenn Sie den Browser mit einer anderen Automatisierungstechnologie automatisieren möchten, stellen Sie sicher, dass Sie diese Eigenschaft auf einen Pfad setzen, der zu einem Modul führt, das folgende Schnittstelle einhält:
import type { Capabilities } from '@wdio/types';
import type { Client, AttachOptions } from 'webdriver';
export default class YourAutomationLibrary {
/**
* Start a automation session and return a WebdriverIO [monad](https://github.com/webdriverio/webdriverio/blob/940cd30939864bdbdacb2e94ee6e8ada9b1cc74c/packages/wdio-utils/src/monad.ts)
* with respective automation commands. See the [webdriver](https://www.npmjs.com/package/webdriver) package
* as a reference implementation
*
* @param {Capabilities.RemoteConfig} options WebdriverIO options
* @param {Function} hook that allows to modify the client before it gets released from the function
* @param {PropertyDescriptorMap} userPrototype allows user to add custom protocol commands
* @param {Function} customCommandWrapper allows to modify the command execution
* @returns a WebdriverIO compatible client instance
*/
static newSession(
options: Capabilities.RemoteConfig,
modifier?: (...args: any[]) => any,
userPrototype?: PropertyDescriptorMap,
customCommandWrapper?: (...args: any[]) => any
): Promise<Client>;
/**
* allows user to attach to existing sessions
* @optional
*/
static attachToSession(
options?: AttachOptions,
modifier?: (...args: any[]) => any, userPrototype?: {},
commandWrapper?: (...args: any[]) => any
): Client;
/**
* Changes The instance session id and browser capabilities for the new session
* directly into the passed in browser object
*
* @optional
* @param {object} instance the object we get from a new browser session.
* @returns {string} the new session id of the browser
*/
static reloadSession(
instance: Client,
newCapabilities?: WebdriverIO.Capabilitie
): Promise<string>;
}
Typ: String
Standard: webdriver
baseUrl
Verkürzen Sie url-Befehlsaufrufe durch Festlegen einer Basis-URL.
- Wenn Ihr
url-Parameter mit/beginnt, wirdbaseUrlvorangestellt (außer dembaseUrl-Pfad, falls vorhanden). - Wenn Ihr
url-Parameter ohne Schema oder/beginnt (wiesome/path), wird die vollständigebaseUrldirekt vorangestellt.
Typ: String
Standard: null
waitforTimeout
Standardtimeout für alle waitFor*-Befehle. (Beachten Sie das Kleinbuchstaben-f im Optionsnamen.) Dieses Timeout betrifft nur Befehle, die mit waitFor* beginnen und ihre Standardwartezeit.
Um das Timeout für einen Test zu erhöhen, lesen Sie bitte die Framework-Dokumentation.
Typ: Number
Standard: 5000
waitforInterval
Standardintervall für alle waitFor*-Befehle, um zu überprüfen, ob ein erwarteter Zustand (z.B. Sichtbarkeit) geändert wurde.
Typ: Number
Standard: 100
region
Wenn Sie auf Sauce Labs laufen, können Sie wählen, Tests zwischen verschiedenen Datenzentren auszuführen: US oder EU.
Um Ihre Region auf EU zu ändern, fügen Sie region: 'eu' zu Ihrer Konfiguration hinzu.
Hinweis: Dies hat nur eine Auswirkung, wenn Sie user- und key-Optionen angeben, die mit Ihrem Sauce Labs-Konto verbunden sind.
Typ: String
Standard: us
(nur für VM und/oder EM/Simulatoren)
Testrunner Optionen
Die folgenden Optionen (einschließlich der oben aufgeführten) sind nur definiert, wenn WebdriverIO mit dem WDIO-Testrunner ausgeführt wird:
specs
Definieren Sie Spezifikationen für die Testausführung. Sie können entweder ein Glob-Muster angeben, um mehrere Dateien auf einmal abzugleichen, oder ein Glob oder eine Reihe von Pfaden in ein Array packen, um sie innerhalb eines einzelnen Arbeitsprozesses auszuführen. Alle Pfade werden relativ zum Konfigurationsdateipfad betrachtet.
Typ: (String | String[])[]
Standard: []
exclude
Spezifikationen von der Testausführung ausschließen. Alle Pfade werden relativ zum Konfigurationsdateipfad betrachtet.
Typ: String[]
Standard: []
suites
Ein Objekt, das verschiedene Suiten beschreibt, die Sie dann mit der Option --suite im wdio CLI angeben können.
Typ: Object
Standard: {}
capabilities
Dasselbe wie der oben beschriebene capabilities-Abschnitt, außer mit der Option, entweder ein multiremote Objekt oder mehrere WebDriver-Sitzungen in einem Array für die parallele Ausführung anzugeben.
Sie können die gleichen anbieter- und browserspezifischen Funktionen wie oben definiert anwenden.
Typ: Object|Object[]
Standard: [{ 'wdio:maxInstances': 5, browserName: 'firefox' }]
maxInstances
Maximale Anzahl der insgesamt parallel laufenden Worker.
Hinweis: Es kann eine Zahl von bis zu 100 sein, wenn die Tests auf externen Anbietern wie Sauce Labs durchgeführt werden. Dort werden die Tests nicht auf einer einzelnen Maschine, sondern auf mehreren VMs getestet. Wenn die Tests auf einem lokalen Entwicklungsrechner ausgeführt werden sollen, verwenden Sie eine angemessenere Zahl wie 3, 4 oder 5. Im Grunde ist dies die Anzahl der Browser, die gleichzeitig gestartet werden und Ihre Tests gleichzeitig ausführen, daher hängt es davon ab, wie viel RAM auf Ihrem Rechner ist und wie viele andere Apps auf Ihrem Rechner laufen.
Sie können maxInstances auch innerhalb Ihrer Capability-Objekte mit der wdio:maxInstances Capability anwenden. Dies begrenzt die Anzahl der parallelen Sitzungen für diese bestimmte Capability.
Typ: Number
Standard: 100
maxInstancesPerCapability
Maximale Anzahl der insgesamt parallel laufenden Worker pro Capability.
Typ: Number
Standard: 100
injectGlobals
Fügt WebdriverIOs Globals (z.B. browser, $ und $$) in die globale Umgebung ein.
Wenn Sie dies auf false setzen, sollten Sie aus @wdio/globals importieren, z.B.:
import { browser, $, $$, expect } from '@wdio/globals'
Hinweis: WebdriverIO verwaltet nicht die Injektion testframework-spezifischer Globals.
Typ: Boolean
Standard: true
bail
Wenn Sie möchten, dass Ihr Testlauf nach einer bestimmten Anzahl von Testfehlern stoppt, verwenden Sie bail.
(Standardmäßig ist es 0, was bedeutet, dass alle Tests ausgeführt werden, egal was passiert.) Hinweis: Ein Test in diesem Zusammenhang sind alle Tests innerhalb einer einzelnen Spec-Datei (bei Verwendung von Mocha oder Jasmine) oder alle Schritte innerhalb einer Feature-Datei (bei Verwendung von Cucumber). Wenn Sie das Bail-Verhalten innerhalb von Tests einer einzelnen Testdatei steuern möchten, schauen Sie sich die verfügbaren Framework-Optionen an.
Typ: Number
Standard: 0 (kein Bail; führe alle Tests aus)
specFileRetries
Die Anzahl der Wiederholungsversuche für eine gesamte Spezifikationsdatei, wenn sie als Ganzes fehlschlägt.
Typ: Number
Standard: 0