WebElement :: sendKeys
de Java Selenium (4.0.0-alpha-4), je me suis un peu bloqué.Keys
préparés ont le même contenu que SHIFT
/ LEFT_SHIFT
Si vous souhaitez effectuer un keyDown à l'aide de Selenium en Java, écrivez le code suivant.
public void sendKey(WebDriver webDriver, CharSequence... keys) {
WebElement element = webDriver.findElement(By.className("hoge"))
element.sendKeys(keys);
}
WebElement.sendKeys
prend CharSequence ... ʻen tant qu'argument, mais utilise souvent l'énumération fournie
Keys`.
Cependant, soyez prudent si vous souhaitez utiliser les mêmes touches de fonction à gauche et à droite, telles que la touche Shift droite / la touche Shift gauche.
L'implémentation de enumKeys
est la suivante.
SHIFT
/ LEFT_SHIFT
sont définis respectivement, mais malheureusement, le comportement de la touche Shift gauche se comportera indépendamment de celle qui est envoyée.
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» implémente «CharSequence», et le constructeur et l'implémentation de «toString ()» sont les suivants.
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);
}
}
En outre, WebElement.sendKeys
combine uniquement les codes de clé donnés avec des sauts de ligne et les envoie à WebDriver.
Par conséquent, il sera reconnu normalement en le spécifiant avec une chaîne de caractères comme indiqué ci-dessous sans utiliser le KeyCode défini dans Keys.SHIFT
.
WebElement element = webDriver.findElement(By.className("hoge"))
element.sendKeys("ShiftRight");
Recommended Posts