input.performActions Befehl
Der input.performActions Befehl des input Moduls simuliert Benutzereingaben in einem gegebenen Kontext, um mit Elementen auf der Seite zu interagieren. Nach dem Ausführen der Aktionen sollten Sie input.releaseActions aufrufen, um Eingaben zu lösen, die in einem Zwischenzustand geblieben sind.
Syntax
/* With required parameters */
{
"method": "input.performActions",
"params": {
"context": "5f07e3ca-ecac-465e-b9ef-49000c196ecf",
"actions": [
{
"type": "key",
"id": "keyboard1",
"actions": [
{
"type": "keyDown",
"value": "a"
}
]
}
]
}
}
/* With required and optional parameters */
{
"method": "input.performActions",
"params": {
"context": "5f07e3ca-ecac-465e-b9ef-49000c196ecf",
"actions": [
{
"type": "pointer",
"id": "mouse1",
"parameters": {
"pointerType": "mouse"
},
"actions": [
{
"type": "pointerMove",
"x": 100,
"y": 200,
"duration": 300,
"origin": "viewport"
}
]
}
]
}
}
Parameter
Das params-Feld enthält:
actions-
Ein Array von Objekten, die jeweils eine Eingabequelle und die für diese Quelle auszuführenden Aktionen repräsentieren. Jedes dieser Objekte repräsentiert das äußere
actionsObjekt, das wiederum einen äußerentypeenthält (Eingabequellentyp kann"key","pointer"oder"wheel"sein) und ein inneresactionsArray. Jedes Objekt im innerenactionsArray hat seinen eigenen innerentypeund zusätzliche Felder, die davon abhängen.Alle Eingabequellen werden parallel verarbeitet. In jedem Takt (Schritt) führt jede Eingabequelle gleichzeitig eine Aktion aus oder tut nichts, wenn eine
"pause"Aktion zugewiesen ist. Dies ermöglicht die Kombination von Eingabequellen, z.B. das Halten der Shift-Taste beim Klicken.Jedes äußere
actionsObjekt hat die folgenden Felder:actions-
Ein Array von Objekten (die inneren
actions), die jeweils eine Aktion für die im äußerentypeFeld angegebene Eingabequelle darstellen.Jedes innere
actionsObjekt hat ein innerestypeFeld, das die auszuführende Operation angibt, und zusätzliche Felder, die davon abhängen. Der inneretypeakzeptiert die folgenden Werte:"keyDown": Simuliert das Drücken einer Taste."keyUp": Simuliert das Loslassen einer Taste."pause": Wartet für die angegebene Dauer, bevor der nächste Schritt erfolgt."pointerDown": Simuliert das Drücken einer Zeigertaste."pointerMove": Simuliert das Bewegen des Zeigers."pointerUp": Simuliert das Loslassen einer Zeigertaste."scroll": Simuliert ein Scrollen mit dem Mausrad.
Die folgende Tabelle zeigt für jeden äußeren
typeWert die gültigen Werte für den innerentype:Äußere typeWerteAkzeptierte innere typeWerte"key""pause","keyDown","keyUp""none""pause""pointer""pause","pointerDown","pointerUp","pointerMove""wheel""pause","scroll"Die folgende Tabelle zeigt für jeden inneren
typeWert die Felder im innerenactionsObjekt: id-
Ein String, der diese Eingabequelle innerhalb der Aktionssequenz eindeutig identifiziert, z.B.
"mouse1"oder"keyboard1". parametersOptional-
Ein Objekt mit einem
pointerTypeFeld, das den Typ des Zeigergeräts angibt. Akzeptierte Werte sind"mouse"(Standard),"pen"oder"touch". Dieses Feld ist nur gültig, wenn der äußeretype"pointer"ist. type-
Ein String (der äußere
type), der den Typ der Eingabequelle identifiziert. Akzeptierte Werte sind"none","key","pointer"und"wheel".
context-
Ein String, der die ID des Kontextes enthält, in dem die Aktionen ausgeführt werden sollen. Kontext-IDs werden von Befehlen wie
browsingContext.getTreezurückgegeben.
Die folgenden Felder sind je nach innerem type in jedem inneren actions Objekt verfügbar:
-
Eine nicht-negative Ganzzahl, die die Zeigertaste identifiziert (
0= primär,1= Mitte,2= sekundär). Geben Sie dies an, wenn der inneretypeFeldwert"pointerDown"oder"pointerUp"ist. deltaX-
Eine Ganzzahl, die die horizontale Scroll-Differenz in CSS-Pixeln angibt. Geben Sie dies an, wenn der innere
typeFeldwert"scroll"ist. deltaY-
Eine Ganzzahl, die die vertikale Scroll-Differenz in CSS-Pixeln angibt. Geben Sie dies an, wenn der innere
typeFeldwert"scroll"ist. durationOptional-
Eine nicht-negative Ganzzahl, die die Zeit in Millisekunden angibt, über die die Aktion ausgeführt wird. Geben Sie dies an, wenn der innere
typeFeldwert"pause","pointerMove"oder"scroll"ist. Für"pointerMove"und"scroll"erfolgt die Gesamtbewegung in einer Reihe kleiner Bewegungen über diesen Zeitraum mit einer vom Browser definierten Rate (z.B. ein Schritt pro Animationsframe). Wenn mehrere äußereactionsObjekte parallel laufen, dauert der Takt so lange wie der längstedurationWert in diesem Takt. originOptional-
Ein String oder ein Objekt, das den Ursprung für die Bewegung oder das Scrollen angibt. Geben Sie dies an, wenn der innere
typeFeldwert"pointerMove"oder"scroll"ist.Wenn
originein String ist, sind akzeptierte Werte:"viewport": Gibt an, dass die x- und y-Koordinaten relativ zur oberen linken Ecke des Viewports sind. Verwenden Sie dies für absolute Positionierung innerhalb der Seite. Dies ist der Standardwert für"scroll", wennoriginweggelassen wird."pointer": Gibt an, dass die x- und y-Koordinaten relativ zur aktuellen Zeigerposition sind. Verwenden Sie dies für relative Bewegungen von der aktuellen Zeigerposition.
Wenn
originein Objekt ist, enthalten Sie die folgenden Felder:type-
Ein String, der auf
"element"gesetzt ist. element-
Ein Objekt, das die ID enthält, die das DOM-Element eindeutig identifiziert, das als Ursprung verwendet werden soll. Die ID wird vom Browser zurückgegeben, wenn Sie das Element mit
browsingContext.locateNodes,script.evaluateoderscript.callFunctionlokalisieren.
value-
Ein String, der den Tastenwert enthält. Geben Sie dies an, wenn der innere
typeFeldwert"keyDown"oder"keyUp"ist. Für spezielle Tasten wie Shift oder Enter verwenden Sie die in der Tabelle der WebDriver Tastaturaktionen definierten Unicode-Codepunkte (z.B."\uE008"für die Shift-Taste). Für druckbare Zeichen verwenden Sie das Zeichen direkt (z.B."a"). - Zeiger-Eigenschaften
-
Die folgenden Felder sind Teil des inneren
actionsObjekts und beschreiben die physikalischen Eigenschaften des Zeigergeräts, wie Maus, Stift oder Touchscreen. Geben Sie diese an, wenn der inneretype"pointerDown"oder"pointerMove"ist.widthOptional-
Eine nicht-negative Ganzzahl, die die Breite in CSS-Pixeln des Zeigerkontaktbereichs angibt. Siehe
PointerEvent.width. heightOptional-
Eine nicht-negative Ganzzahl, die die Höhe in CSS-Pixeln des Zeigerkontaktbereichs angibt. Siehe
PointerEvent.height. pressureOptional-
Ein Float-Wert, der den normalisierten Druck des Zeigers im Bereich von
0.0bis1.0angibt. SiehePointerEvent.pressure. tangentialPressureOptional-
Ein Float-Wert, der den normalisierten tangentialen Druck im Bereich von
-1.0bis1.0angibt. SiehePointerEvent.tangentialPressure. twistOptional-
Eine Ganzzahl, die die Drehung im Uhrzeigersinn in Grad des Zeigers im Bereich von
0bis359angibt. SiehePointerEvent.twist. altitudeAngleOptional-
Ein Float-Wert, der den Höhenwinkel in Radiant des Zeigers im Bereich von
0.0bisπ/2angibt. SiehePointerEvent.altitudeAngle. azimuthAngleOptional-
Ein Float-Wert, der den Azimutwinkel in Radiant des Zeigers im Bereich von
0.0bis2πangibt. SiehePointerEvent.azimuthAngle.
x-
Eine Zahl (für
"pointerMove") oder eine Ganzzahl (für"scroll") die die x-Koordinate angibt. Geben Sie dies an, wenn der inneretypeWert"pointerMove"oder"scroll"ist. y-
Eine Zahl (für
"pointerMove") oder eine Ganzzahl (für"scroll") die die y-Koordinate angibt. Geben Sie dies an, wenn der inneretypeWert"pointerMove"oder"scroll"ist.
Rückgabewert
Das result Feld in der Antwort ist ein leeres Objekt ({}).
Fehler
invalid argument-
Die Aktionssequenz ist fehlerhaft, z.B. wenn ein erforderliches Feld fehlt, ein Feldwert den falschen Typ hat oder ein äußerer
typeWert nicht"none","key","pointer"oder"wheel"ist. no such frame-
Kein Kontext mit der gegebenen Kontext-ID gefunden.
Beispiele
>Drücken der Shift-Taste beim Klicken auf ein Element
Betrachten Sie ein Szenario, in dem Sie die Shift-Taste gedrückt halten möchten, während Sie auf ein Element klicken, z.B. um eine Textauswahl zu erweitern.
Mit einer WebDriver BiDi Verbindung und einer aktiven Sitzung erhalten Sie die Kontext-ID mithilfe von browsingContext.getTree und die Elementkennung mithilfe von browsingContext.locateNodes.
Senden Sie die folgende Nachricht mit zwei äußeren actions Objekten — einer "key" Quelle und einer "pointer" Quelle — jeweils mit einem äußeren type und einem inneren actions Array, die parallel über die folgenden drei Takte laufen:
- Takt 1: Die Tastatur drückt die Shift-Taste, während der Zeiger zum Element bewegt wird. Da die
durationvonpointerMoveals300angegeben ist, dauert der Takt 300 ms, was die längstedurationin diesem Takt ist. - Takt 2: Die Tastatur pausiert, während die Zeigertaste gedrückt wird (
pointerDown). Dieser Takt dauert 0 ms. - Takt 3: Die Shift-Taste wird losgelassen (
keyUp) und die Zeigertaste wird gleichzeitig losgelassen (pointerUp). Dieser Takt dauert ebenfalls 0 ms.
{
"id": 1,
"method": "input.performActions",
"params": {
"context": "5f07e3ca-ecac-465e-b9ef-49000c196ecf",
"actions": [
{
"type": "key",
"id": "keyboard1",
"actions": [
{
"type": "keyDown", // Tick 1: Shift key down (0 ms)
"value": "\uE008"
},
{
"type": "pause" // Tick 2: Keyboard pause (0 ms)
},
{
"type": "keyUp", // Tick 3: Shift key up (0 ms)
"value": "\uE008"
}
]
},
{
"type": "pointer",
"id": "mouse1",
"parameters": {
"pointerType": "mouse"
},
"actions": [
{
"type": "pointerMove", // Tick 1: Move to element (300 ms)
"x": 0,
"y": 0,
"duration": 300,
"origin": {
"type": "element",
"element": {
"sharedId": "3be28343-afd3-4dea-a2b6-a863fbbb80e1"
}
}
},
{
"type": "pointerDown", // Tick 2: Press button (0 ms)
"button": 0
},
{
"type": "pointerUp", // Tick 3: Release button (0 ms)
"button": 0
}
]
}
]
}
}
Der Browser antwortet wie folgt:
{
"id": 1,
"type": "success",
"result": {}
}
Scrollen der Seite
Betrachten Sie ein Szenario, in dem Sie das Scrollen einer Seite nach unten simulieren möchten.
Mit einer WebDriver BiDi Verbindung und einer aktiven Sitzung erhalten Sie die Kontext-ID mithilfe von browsingContext.getTree.
Senden Sie die folgende Nachricht, die von der oberen linken Ecke des Viewports (x: 0, y: 0) um 300 CSS-Pixel nach unten (deltaY: 300) mit keinem horizontalen Scrollen (deltaX: 0) scrollt.
{
"id": 2,
"method": "input.performActions",
"params": {
"context": "5f07e3ca-ecac-465e-b9ef-49000c196ecf",
"actions": [
{
"type": "wheel",
"id": "wheel1",
"actions": [
{
"type": "scroll",
"x": 0,
"y": 0,
"deltaX": 0,
"deltaY": 300
}
]
}
]
}
}
Der Browser antwortet wie folgt:
{
"id": 2,
"type": "success",
"result": {}
}
Spezifikationen
| Spezifikation |
|---|
| WebDriver BiDi> # command-input-performActions> |
Browser-Kompatibilität
Siehe auch
input.releaseActionsBefehlinput.setFilesBefehlinput.fileDialogOpenedEreignis