Das Browser-Objekt
Verlängerungen: EventEmitter
Das Browser-Objekt ist die Session-Instanz, mit der Sie den Browser oder das mobile Gerät steuern. Wenn Sie den WDIO Testrunner benutzen, kônnen Sie die globale Variable browser
oder driver
nutzen oder importieren sie die Variables vom @wdio/globals
Paket. Wenn Sie WebdriverIO im Standalone-Modus verwenden, wird das Browser-Objekt durch die remote
Methode zurückgegeben.
Das Beenden der Session wird ebenfalls vom Testrunner übernommen. Das Beenden der Session wird ebenfalls vom Testrunner übernommen. Das Beenden der Session wird ebenfalls vom Testrunner übernommen.
Eigenschaften
Ein Browser-Objekt hat folgende Eigenschaften:
Namen | Typ | Details |
---|---|---|
capabilities | Object | Zugewiesene Capabilities vom WebDriver Server. Beispiel: { |
requestedCapabilities | Object | Angefragte Capabilities vom WebDriver Server. Beispiel: { browserName: 'chrome' } |
sessionId | String | Session-Id vom Remote-Server zugewiesen. |
options | Object | WebdriverIO Optionen je nachdem, wie das Browserobjekt erstellt wurde. Weitere Setup-Typen. |
commandList | String[] | Eine Liste der Befehle, die in der Browser-Instanz registriert sind |
isMobile | Boolean | Zeigt eine mobile Session an. Mehr unter Mobile Flags. |
isIOS | Boolean | Zeigt eine iOS-Session an. Mehr unter Mobile Flags. |
isAndroid | Boolean | Zeigt eine Android-Sitzung an. Mehr unter Mobile Flags. |
Methoden
Basierend auf dem für Ihre Sitzung verwendeten Automatisierungs-Backend WebdriverIO identifiziert welche Protokollbefehle dem Browser-Objekt hinzugefügt werden. Zum Beispiel, bei einer automatisierten Sitzung in Chrome haben Sie Zugriff auf Chrome-spezifische Befehle wie elementHover
, aber keine der Appium Befehle.
Außerdem bietet WebdriverIO eine Reihe von praktischen Methoden, die zur Verwendung empfohlen werden um mit dem Browser oder Elementen auf der Seite zu interagieren.
Zusätzlich stehen folgende Befehle zur Verfügung:
Namen | Parameter | Details |
---|---|---|
addCommand | - commandName (Type: String )- fn (Type: Function )- attachToElement (Type: boolean ) | Ermöglicht die Definition benutzerdefinierter Befehle, die aus dem Browser-Objekt für Kompositionszwecke aufgerufen werden können. Lesen Sie mehr in der Benutzerdefinierte Anleitung |
overwriteCommand | - commandName (Type: String )- fn (Type: Function )- attachToElement (Type: boolean ) | Ermöglicht das Überschreiben aller Browserbefehle mit benutzerdefinierten Funktionen. Verwenden Sie diese Funktionalität sorgfältig, da es Framework-Benutzer verwirren kann. Lesen Sie mehr in der Benutzerdefinierte Anleitung |
addLocatorStrategy | - strategyName (Type: String )- fn (Type: Function ) | Ermöglicht das Definieren einer benutzerdefinierten Selektorstrategie. Weitere Informationen finden Sie im Selektoren Guide. |
Bemerkungen
Mobile Markierungen
Wenn sich Ihr Test anders verhalten soll, basierend darauf, ob dieser auf einem Mobilen-Endgerät ausgeführt wird oder nicht, können Sie auf die mobilen Attribute der Session zurückgreifen.
Zum Beispiel mit dieser Konfiguration:
// wdio.conf.js
export const config = {
// ...
capabilities: {
platformName: 'iOS',
app: 'net.company.SafariLauncher',
udid: '123123123123abc',
deviceName: 'iPhone',
// ...
}
// ...
}
Sie können auf diese Markierungen in Ihrem Test wie folgt zugreifen:
// Note: `driver` is the equivalent to the `browser` object but semantically more correct
// you can choose which global variable you want to use
console.log(driver.isMobile) // outputs: true
console.log(driver.isIOS) // outputs: true
console.log(driver.isAndroid) // outputs: false
Dies kann nützlich sein, um zum Beispiel Selektoren basierend vom Device Typ im Page Objekt zu definieren:
// mypageobject.page.js
import Page from './page'
class LoginPage extends Page {
// ...
get username() {
const selectorAndroid = 'new UiSelector().text("Cancel").className("android.widget.Button")'
const selectorIOS = 'UIATarget.localTarget().frontMostApp().mainWindow().buttons()[0]'
const selectorType = driver.isAndroid ? 'android' : 'ios'
const selector = driver.isAndroid ? selectorAndroid : selectorIOS
return $(`${selectorType}=${selector}`)
}
// ...
}
Sie können ebenfalls bestimmte mobile Markierungen (z.B. isAndroid oder isIOS) verwenden, um Tests nur auf bestimmten Gerätetypen auszuführen:
// mytest.e2e.js
describe('my test', () => {
// ...
// only run test with Android devices
if (driver.isAndroid) {
it('tests something only for Android', () => {
// ...
})
}
// ...
})
Events
Das Browser-Objekt ist ein EventEmitter und ein paar Ereignisse werden für Ihren Gebrauch emittiert.
Hier ist eine Liste der Ereignisse. Beachten Sie, dass dies noch nicht die vollständige Liste der verfügbaren Events ist. Zögern Sie nicht, das Dokument zu aktualisieren, indem Sie hier Beschreibungen von weiteren Events hinzufügen.
request.performance
Dies ist ein Ereignis, um Operationen auf WebDriver Ebene zu messen. Immer wenn WebdriverIO eine Anfrage an das WebDriver-Backend sendet, wird dieses Ereignis mit einigen nützlichen Informationen emittiert:
durationMillisecond
: Zeitdauer der Anfrage in Millisekunden.error
: Fehlerobjekt wenn die Anfrage fehlgeschlagen ist.request
: Request Objekt. Hier finden Sie Url, Methode, Header, etc.retryCount
: Wenn es0
ist, war die Anfrage der erste Versuch. Die Zahl erhöht sich, wenn WebDriverIO unter der Haube den Befehl erneut ausführt.success
: Boolean die anzeigt, ob der Befehl erfolgreich ausgeführt wurde. Wenn esfalse
ist, wird eineerror
Eigenschaft ebenfalls zur Verfügung gestellt.
Ein Beispielereignis:
Object {
"durationMillisecond": 0.01770925521850586,
"error": [Error: Timeout],
"request": Object { ... },
"retryCount": 0,
"success": false,
},
Benutzerdefinierte Befehle
Sie können benutzerdefinierte Befehle dem Browser Objekt hinzufügen, um Workflows, die häufig verwendet werden, in einzelne Befehle zu verpacken. Schauen Sie sich unsere Anleitung unter Benutzerdefinierte Befehle für weitere Informationen an.