[JAVA] Utilisez correctement Shift Right et Shift Left dans Selenium

Aperçu en 3 lignes

problème

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 fournieKeys`. 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),
  ...
}

Solution

«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

Utilisez correctement Shift Right et Shift Left dans Selenium
Utilisation correcte de la classe abstraite et de l'interface en Java
Traitement de la date et de l'heure en Ruby. Utilisez correctement la date et l'heure.
Différence entre getText () et getAttribute () de Selenium
Capture et sauvegarde de l'installation de sélénium en Java
Utilisation de polices japonaises et de caractères étrangers dans Jasper Report
Utilisez différents TransactionManager pour les métadonnées et l'étape dans spring-batch
Utiliser des variables pour les noms de classe et les noms d'identifiant dans haml