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.
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 Chromemoz:firefoxOptions
: Geckodriver-Erweiterungen, nur anwendbar fĂŒr Tests in Firefoxms:edgeOptions
: EdgeOptions zur Festlegung der Umgebung bei Verwendung von EdgeDriver fĂŒr Tests mit Chromium Edge
Cloud-Anbieter Capability-Erweiterungenâ
sauce:options
: Sauce Labsbstack:options
: BrowserStacktb:options
: TestingBot- und viele mehr...
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
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
- wdio:chromedriverOptions
- wdio:geckodriverOptions
- wdio:edgedriverOptions
- 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
Alle Geckodriver-Optionen finden Sie im offiziellen Treiberpaket.
Alle Edgedriver-Optionen finden Sie im offiziellen Treiberpaket.
Alle Safaridriver-Optionen finden Sie im offiziellen Treiberpaket.
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:
- 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 den Headless-Modus nicht unterstĂŒtzt.
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.:
- Chrome
- Firefox
- Microsoft Edge
- Safari
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'
}
}
Beim Testen mit Firefox wird WebdriverIO basierend auf der definierten browserVersion
automatisch die gewĂŒnschte Browser-Version und den Treiber fĂŒr Sie herunterladen, z.B.:
{
browserName: 'firefox',
browserVersion: '119.0a1' // oder 'latest'
}
Wenn Sie eine manuell heruntergeladene Version testen möchten, können Sie einen BinÀrpfad zum Browser angeben:
{
browserName: 'firefox',
'moz:firefoxOptions': {
binary: '/Applications/Firefox\ Nightly.app/Contents/MacOS/firefox'
}
}
ZusÀtzlich können Sie, wenn Sie einen manuell heruntergeladenen Treiber verwenden möchten, einen BinÀrpfad zum Treiber angeben:
{
browserName: 'firefox',
'wdio:geckodriverOptions': {
binary: '/path/to/geckodriver'
}
}
Beim Testen mit Microsoft Edge stellen Sie sicher, dass Sie die gewĂŒnschte Browser-Version auf Ihrem GerĂ€t installiert haben. Sie können WebdriverIO auf den Browser verweisen, der ausgefĂŒhrt werden soll:
{
browserName: 'msedge',
'ms:edgeOptions': {
binary: '/Applications/Microsoft\ Edge\ Canary.app/Contents/MacOS/Microsoft\ Edge\ Canary'
}
}
WebdriverIO wird basierend auf der definierten browserVersion
automatisch die gewĂŒnschte Treiberversion fĂŒr Sie herunterladen, z.B.:
{
browserName: 'msedge',
browserVersion: '109' // oder '109.0.1467.0', 'stable', 'dev', 'canary', 'beta'
}
ZusÀtzlich können Sie, wenn Sie einen manuell heruntergeladenen Treiber verwenden möchten, einen BinÀrpfad zum Treiber angeben:
{
browserName: 'msedge',
'wdio:edgedriverOptions': {
binary: '/path/to/msedgedriver'
}
}
Beim Testen mit Safari stellen Sie sicher, dass Sie die Safari Technology Preview auf Ihrem GerÀt installiert haben. Sie können WebdriverIO auf diese Version verweisen:
{
browserName: 'safari technology preview'
}
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': {
// ...
}
}
}
}