WebElement :: sendKeys
von Java Selenium (4.0.0-alpha-4) richtig zu verwenden, blieb ich ein wenig hängen.Wenn Sie keyDown mit Selenium in Java ausführen möchten, schreiben Sie den folgenden Code.
public void sendKey(WebDriver webDriver, CharSequence... keys) {
WebElement element = webDriver.findElement(By.className("hoge"))
element.sendKeys(keys);
}
WebElement.sendKeys
verwendet CharSequence ...
als Argument, verwendet jedoch häufig die angegebene AufzählungKeys
.
Seien Sie jedoch vorsichtig, wenn Sie links und rechts dieselben Funktionstasten verwenden möchten, z. B. die rechte Umschalttaste / die linke Umschalttaste.
Die Implementierung von enumKeys
ist wie folgt.
SHIFT
/ LEFT_SHIFT
sind jeweils definiert, aber leider verhält sich das Verhalten der linken Umschalttaste unabhängig davon, welche gesendet wird.
Keys.java
public enum Keys implements CharSequence {
...
SHIFT ('\uE008'),
LEFT_SHIFT (Keys.SHIFT),
CONTROL ('\uE009'),
LEFT_CONTROL (Keys.CONTROL),
ALT ('\uE00A'),
LEFT_ALT (Keys.ALT),
LEFT ('\uE012'),
ARROW_LEFT (Keys.LEFT),
UP ('\uE013'),
ARROW_UP (Keys.UP),
RIGHT ('\uE014'),
ARROW_RIGHT (Keys.RIGHT),
DOWN ('\uE015'),
ARROW_DOWN (Keys.DOWN),
...
}
Keys
implementiert CharSequence
und der Konstruktor und die Implementierung vontoString ()
lauten wie folgt.
Keys.java
public enum Keys implements CharSequence {
...
private final char keyCode;
private final int codePoint;
Keys(Keys key) {
this(key.charAt(0));
}
Keys(char keyCode) {
this.keyCode = keyCode;
this.codePoint = String.valueOf(keyCode).codePoints().findFirst().getAsInt();
}
...
@Override
public String toString {
return String.valueOf(keyCode);
}
}
Außerdem kombiniert "WebElement.sendKeys" nur die angegebenen Schlüsselcodes mit Zeilenumbrüchen und sendet sie an WebDriver.
Daher wird es normal erkannt, indem es wie unten gezeigt mit einer Zeichenfolge angegeben wird, ohne den in Keys.SHIFT
definierten KeyCode zu verwenden.
WebElement element = webDriver.findElement(By.className("hoge"))
element.sendKeys("ShiftRight");
Recommended Posts