Classe d'action dans Selenium

โšก Rรฉsumรฉ intelligent

Classe d'action dans Selenium Ce tutoriel explique comment gรฉrer les รฉvรฉnements avancรฉs du clavier et de la souris, tels que le survol, le glisser-dรฉposer, le clic droit et les combinaisons de touches, grรขce ร  l'API d'interactions utilisateur avancรฉes. Il prรฉsente รฉgalement les classes Actions et Action, leurs principales mรฉthodes et la maniรจre d'enchaรฎner plusieurs interactions.

  • ๐Ÿ‡ง๐Ÿ‡ท Objectif principal : La classe Actions automatise les รฉvรฉnements composรฉs de la souris et du clavier que la fonction click() de base ne peut pas gรฉrer.
  • (I.e. Deux classes : Actions construit l'interaction ; Action stocke la sรฉquence compilรฉe ร  exรฉcuter.
  • ๐Ÿงฑ Construire puis exรฉcuter : Enchaรฎnez les mรฉthodes, terminez par build() et exรฉcutez avec perform().
  • ๐Ÿ“‹ Mรฉthodes clรฉs : moveToElement(), dragAndDrop(), keyDown()/keyUp(), contextClick() et sendKeys().
  • ๐Ÿค– Activation de l'IA : Les assistants IA gรฉnรจrent du code de classe Action et des localisateurs auto-rรฉparateurs lors des tests d'interaction.

Sortie au survol de la souris

Classe d'action dans Selenium

Classe d'action dans Selenium est une fonctionnalitรฉ intรฉgrรฉe de gestion des รฉvรฉnements clavier et souris. Elle prend en charge des opรฉrations telles que les clics multiples avec la touche Ctrl, le glisser-dรฉposer, et bien d'autres. Ces opรฉrations sont rรฉalisรฉes ร  l'aide de l'API Advanced User Interactions. Selenium Pilote Web.

Gestion des รฉvรฉnements clavier et souris

La gestion des รฉvรฉnements spรฉciaux du clavier et de la souris s'effectue ร  l'aide de API d'interactions utilisateur avancรฉes. Il contient le Action et Action Les classes nรฉcessaires ร  l'exรฉcution de ces รฉvรฉnements sont listรฉes ci-dessous. Les รฉvรฉnements clavier et souris les plus frรฉquemment utilisรฉs, fournis par la classe Actions, sont รฉgalement listรฉs ci-dessous.

Mรฉthode Description
cliquezEtMaintenez() Clics (sans relรขcher) ร  l'emplacement actuel de la souris.
contexteClic() Effectue un clic contextuel (clic droit) ร  l'emplacement actuel de la souris.
doubleClic() Effectue un double-clic ร  l'emplacement actuel de la souris.
dragAndDrop (source, cible) Cliquez et maintenez le bouton de la souris enfoncรฉ sur l'รฉlรฉment source, dรฉplacez-le vers l'รฉlรฉment cible, puis relรขchez-le. Paramรจtres : source (รฉlรฉment sur lequel cliquer), cible (รฉlรฉment oรน relรขcher le bouton).
dragAndDropBy (source, dรฉcalage x, dรฉcalage y) Un clic maintenu sur l'รฉlรฉment source permet de le dรฉplacer d'un dรฉcalage donnรฉ, puis de relรขcher le bouton. Paramรจtres : source, xOffset (horizontal), yOffset (vertical).
keyDown(modifier_key) Maintient une touche de modification enfoncรฉe sans la relรขcher, de sorte que les interactions suivantes supposent qu'elle reste enfoncรฉe. Paramรจtre : une touche de modification (Keys.ALT, Keys.SHIFT ou Keys.CONTROL).
toucheUp(touche_modificatrice) Relรขche une touche de modification. Paramรจtre : une touche de modification (Keys.ALT, Keys.SHIFT ou Keys.CONTROL).
moveByOffset (dรฉcalage x, dรฉcalage y) Dรฉplace la souris par rapport ร  sa position actuelle (ou 0,0) de la valeur indiquรฉe. Une valeur nรฉgative de x dรฉplace la souris vers la gauche ; une valeur nรฉgative de y la dรฉplace vers le haut.
moveToElement(versElement) Dรฉplace le curseur au centre de l'รฉlรฉment. Paramรจtre : l'รฉlรฉment cible.
Libรฉration() Relรขche le bouton gauche de la souris enfoncรฉ ร  l'emplacement actuel.
sendKeys (onElement, sรฉquence de caractรจres) Envoie une sรฉrie de frappes au clavier ร  un รฉlรฉment. Paramรจtres : onElement (gรฉnรฉralement un champ texte), charsequence (les frappes au clavier ร  envoyer).

Dans l'exemple suivant, nous utilisons le moveToElement() mรฉthode pour survoler l'un des Mercury Lignes du tableau des visites.

Gestion des รฉvรฉnements clavier et souris

La cellule illustrรฉe ci-dessus fait partie d'un L'รฉlรฉment est de couleur orange (#FFC455) lorsqu'il n'est pas survolรฉ. Au survol, sa couleur devient transparente et se fond dans le fond du tableau.

ร‰tape 1) Importer le Action et Action classes.

Actions d'importation et classes d'actions

ร‰tape 2) Instanciez un nouvel objet Actions.

Instancier l'objet Actions

ร‰tape 3) Instanciez une action ร  l'aide de l'objet Actions de l'รฉtape 2.

Instancier l'objet Action

Ici, nous utilisons le moveToElement() mรฉthode pour survoler le lien ยซ Accueil ยป. build() Cette mรฉthode est toujours appelรฉe en dernier afin que toutes les actions listรฉes soient compilรฉes en une seule รฉtape.

ร‰tape 4) Utilisez le bouton perform() mรฉthode pour exรฉcuter l'objet Action conรงu ร  l'รฉtape 3.

Effectuez l'action

Ci-dessous se trouve le code WebDriver complet qui vรฉrifie la couleur d'arriรจre-plan de รฉlรฉment avant et aprรจs le survol de la souris.

package newproject;

import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.interactions.Action;
import org.openqa.selenium.interactions.Actions;

public class PG7 {

    public static void main(String[] args) {
        String baseUrl = "https://demo.guru99.com/test/newtours/";
        System.setProperty("webdriver.gecko.driver", "C:\\geckodriver.exe");
        WebDriver driver = new FirefoxDriver();

        driver.get(baseUrl);
        WebElement link_Home = driver.findElement(By.linkText("Home"));
        WebElement td_Home = driver.findElement(By.xpath(
            "//html/body/div/table/tbody/tr/td"
            + "/table/tbody/tr/td"
            + "/table/tbody/tr/td"
            + "/table/tbody/tr"));

        Actions builder = new Actions(driver);
        Action mouseOverHome = builder.moveToElement(link_Home).build();

        String bgColor = td_Home.getCssValue("background-color");
        System.out.println("Before hover: " + bgColor);
        mouseOverHome.perform();
        bgColor = td_Home.getCssValue("background-color");
        System.out.println("After hover: " + bgColor);
        driver.close();
    }
}

Le rรฉsultat ci-dessous montre que la couleur de fond est devenue transparente aprรจs le survol de la souris.

Sortie au survol de la souris

Construire une sรฉrie dโ€™actions multiples

Vous pouvez crรฉer une sรฉrie d'actions ร  l'aide des classes Action et Actions. N'oubliez pas de terminer la sรฉrie avec le build() mรฉthode. Considรฉrez l'exemple de code ci-dessous.

ร‰laboration d'une sรฉrie d'actions multiples

public static void main(String[] args) {
    String baseUrl = "https://www.facebook.com/";
    WebDriver driver = new FirefoxDriver();

    driver.get(baseUrl);
    WebElement txtUsername = driver.findElement(By.id("email"));

    Actions builder = new Actions(driver);
    Action seriesOfActions = builder
        .moveToElement(txtUsername)
        .click()
        .keyDown(txtUsername, Keys.SHIFT)
        .sendKeys(txtUsername, "hello")
        .keyUp(txtUsername, Keys.SHIFT)
        .doubleClick(txtUsername)
        .contextClick()
        .build();

    seriesOfActions.perform();
}

Sortie de la sรฉrie d'actions

FAQ

La classe Action reprรฉsente une sรฉquence compilรฉe d'interactions clavier et souris construites avec la classe Actions. Elle est exรฉcutรฉe via l'API Advanced User Interactions. Selenium Pilote Web.

Les actions (au pluriel) sont les รฉlรฉments permettant d'enchaรฎner des interactions comme le survol et le clic. Une action (au singulier) est l'objet compilรฉ renvoyรฉ par la fonction `build()` et exรฉcutรฉ avec `perform()`.

La mรฉthode `build()` compile toutes les interactions enchaรฎnรฉes en une seule action composite. Elle est toujours appelรฉe en dernier, juste avant `perform()`, afin que les รฉtapes mises en file d'attente s'exรฉcutent ensemble, comme une seule sรฉquence.

La mรฉthode `perform()` exรฉcute l'action crรฉรฉe auprรจs du navigateur. Sans elle, les interactions chaรฎnรฉes sont simplement mises en file d'attente et ne sont jamais envoyรฉes ร  la page.

Utilisez la mรฉthode `moveToElement(element)` sur un objet Actions, puis appelez `build()` et `perform()`. Cela dรฉplace le curseur au centre de l'รฉlรฉment et dรฉclenche l'action au survol, comme l'affichage d'un menu dรฉroulant.

Il prend en charge les interactions suivantes : clic maintenu, clic contextuel, double clic, glisser-dรฉposer, glisser-dรฉposer par, appui sur la touche, relรขchement de la touche, dรฉplacement par dรฉcalage, dรฉplacement vers un รฉlรฉment, relรขchement et envoi de touches โ€” couvrant ainsi la plupart des interactions avancรฉes.

Les outils d'IA utilisent des localisateurs auto-rรฉparateurs qui s'adaptent aux changements d'รฉlรฉments, rรฉduisant ainsi les erreurs alรฉatoires lors des tests de survol et de glisser-dรฉposer. Ils recommandent รฉgalement des XPath stables et ajoutent automatiquement des temps d'attente intelligents.

Oui. Les assistants de programmation IA transforment un scรฉnario en langage clair tel que ยซ survolez Accueil puis cliquez avec le bouton droit ยป en une chaรฎne d'actions fonctionnelle avec build() et perform(), et suggรจrent des localisateurs robustes.

Rรฉsumez cet article avec :