Classe Actions critiques en sélénium - Guide absolu 2021

Nous allons discuter et apprendre l'utilisation exhaustive de la classe Actions dans Selenium à travers différentes opérations Web. La classe Actions dans Selenium est largement utilisée pour effectuer diverses opérations Web telles que le mouvement de la souris et du clavier, qui sont des actions avancées du navigateur Web.

Classe d'actions en sélénium
Classe d'actions dans Selenium

Actions de la souris

  • Glisser-déposer dans le sélénium
  • ClickAndHold dans Selenium
  • moveToElement dans Selenium 
  • dragAndDropBy dans Selenium 
  • MoveByOffset dans Selenium
  • DoubleClick dans Selenium
  • RightClick ou ContextClick dans le sélénium
  • Pause dans le sélénium
  • Survol de la souris dans le sélénium

Actions du clavier

  • sendKeys dans Selenium
  • KeyUp dans Selenium
  • KeyDown dans Selenium

Classe d'actions en sélénium

Qu'est-ce que la classe d'actions dans Selenium: 

Actions Class est une classe de Selenium Bundle Api du package org.openqa.selenium.interactions pour gérer les interactions Web critiques et avancées avec les utilisateurs grâce à l'automatisation du navigateur. Fournit aux utilisateurs une poignée pour effectuer diverses actions de souris et de clavier via différentes méthodes mentionnées ci-dessus.  

Classe d'actions en sélénium
Classe d'actions dans Selenium

Nous aborderons ici toutes les interactions Web via la classe Actions dans Selenium, pour commencer Nous apprenons les interactions souris et passons à la classe Interactions KeyBoard avec Actions dans Selenium.

Interactions avec la souris - Classe d'actions dans Selenium

Glisser-déposer dans le sélénium

Le glisser-déposer dans Selenium peut être effectué selon trois approches différentes avec la classe Actions dans Selenium: 

  • Avec la méthode build () 
  • Avec la méthode dragAndDropBy ()
  • Avec la méthode dragAndDrop ().

Glissez-déposez dans Selenium avec Action Class dans Selenium via la méthode de construction: 

Nous avons besoin de deux éléments Web pour effectuer le glisser-déposer dans Selenium tels que Source WebElement (qui doit être glissé) et Destination WebElement (où le WebElement source à déposer, c'est-à-dire le WebElement de destination), La méthode ci-dessous est une méthode personnalisée ( que vous pouvez utiliser pour créer votre Framework WebUtils) qui effectuent le glisser-déposer dans Selenium et cette méthode prend deux arguments, l'un est Source WebElement et un autre est Destination WebElement comme mentionné précédemment: 

public void dragAndDrop(By source, By destination) {
   try {
       WebElement sourceElement = driver.findElement(source);
       WebElement destinationElement = driver.findElement(destination);
       Actions builder = new Actions(driver);
       Action dragAndDrop = builder.clickAndHold(sourceElement).moveToElement(destinationElement)
               .release(destinationElement).build();
       dragAndDrop.perform();
       BASE_LOGGER.info("Successfully performed the Drag and Drop action ");
   } catch (Exception e) {
       String exceptionData = e.getCause().getMessage();
       BASE_LOGGER.error("Error encountered i.e : " + exceptionData + " while performing DragAndDrop ");
   }
}

Pour apprendre tout le concept du glisser-déposer et accéder à toutes les approches permettant d'effectuer le glisser-déposer dans Selenium, cliquez ici.

ClickAndHold dans Selenium 

ClickAndHold est une autre méthode importante de la classe Actions (du package org.openqa.selenium.interactions) dans Selenium pour
effectuez d'abord une opération de clic gauche sur n'importe quel élément web et maintenez-la enfoncée sans relâcher la souris.

Cette méthode est principalement utilisée lors de l'exécution des scénarios de glisser-déposer, voici l'exemple de code ci-dessous: 

Classe d'actions en sélénium
cliquez et maintenez -Actions classe dans Selenium

MoveToElement dans Selenium

MoveToElement est une méthode de la classe Actions de Selenium pour effectuer le déplacement vers un autre WebElement (Destination Webelement), que cette méthode prend comme argument respectif.

Cette méthode est principalement utilisée lors de l'exécution des scénarios de glisser-déposer, voici l'exemple de code ci-dessous: 

Déplacer vers l'élément - Classe Actions dans Selenium

Double-cliquez sur Selenium

Pour reproduire l'opération de double-clic via la souris, nous devons effectuer un double-clic via la classe Actions dans Selenium et nous pouvons le faire dans l'approche ci-dessous: 

public void doubleClick(By locator) {
   try {
       WebElement element = driver.findElement(locator);
       Actions actions = new Actions(driver);
       actions.doubleClick(element).perform();
       BASE_LOGGER.info("Performed the double Click on the Element  : " + locator);
   } catch (StaleElementReferenceException e) {
       BASE_LOGGER.error("Element is not attached to the page document " + e.getCause().getMessage());
   } catch (NoSuchElementException e) {
       BASE_LOGGER.error("Element " + locator + " was not found in DOM " + e.getCause().getMessage());
   } catch (Exception e) {
       BASE_LOGGER.error("Element " + locator + " was not clickable " + e.getCause().getMessage());
   }
}

L'extrait de code ci-dessus est une méthode qui prend essentiellement un argument comme Locator, c'est-à-dire le WebElement sur lequel le double-clic doit être effectué. 

clic contextuel ou clic droit sur Selenium

Pour répliquer l'opération de clic contextuel ou de clic droit via la souris, nous devons exécuter la méthode de clic contextuel via la classe Actions dans Selenium et nous pouvons le faire dans l'approche ci-dessous: 

public void rightClick(By locator) {
   try {
       WebElement element = driver.findElement(locator);
       Actions actions = new Actions(driver);
       actions.contextClick(element).perform();
       BASE_LOGGER.info("Performed the context Click on the Element  : " + locator);
   } catch (StaleElementReferenceException e) {
       BASE_LOGGER.error("Element is not attached to the page document " + e.getCause().getMessage());
   } catch (NoSuchElementException e) {
       BASE_LOGGER.error("Element " + locator + " was not found in DOM " + e.getCause().getMessage());
   } catch (Exception e) {
       BASE_LOGGER.error("Element " + locator + " was not clickable " + e.getCause().getMessage());
   }
}

L'extrait de code ci-dessus est une méthode qui prend essentiellement un argument comme Locator, c'est-à-dire le WebElement sur lequel le double-clic doit être effectué. 

Pause dans le sélénium 

Chaque fois que nous voulons avoir introduit un délai entre différentes actions, nous pourrions utiliser la méthode de pause entre les opérations Actions, comme disons si nous voulons avoir quelques secondes de délai entre l'opération glisser-déposer, alors nous pouvons appeler la pause ( ) méthode de classe d'actions en sélénium dans l'approche ci-dessous: 

public void pauseBetweenActions(By source,By destination, int timeUnit) {
   try {
       WebElement sourceElement = driver.findElement(source);
       WebElement destinationElement = driver.findElement(destination);
       Actions builder = new Actions(driver);
       builder.clickAndHold(sourceElement).moveToElement(destinationElement).pause(timeUnit).release(destinationElement).build().perform();
       BASE_LOGGER.info("Successfully performed the Drag and Drop action ");
   } catch (Exception e) {
       String exceptionData = e.getCause().getMessage();
       BASE_LOGGER.error("Error encountered i.e : " + exceptionData + " while performing DragAndDrop ");
   }
}

Dans la méthode ci-dessus, il prend trois arguments: un WebElement source, un autre argument est l'élément de destination, et le dernier est pour timeUnit, c'est-à-dire le délai que nous voulons introduire en utilisant pause () dans Selenium.

Survol de la souris dans le sélénium

L'opération de survol de la souris dans Selenium peut être obtenue en utilisant la classe Actions dans Selenium, en gros, une fois que nous nous concentrons sur n'importe quel élément web et à partir de là, nous voulons placer le curseur de votre souris sur n'importe quel autre élément par cette opération de survol de la souris, et ce WebElement où nous voulons prendre notre curseur de la souris s'appelle Target WebElement. 

Vous trouverez ci-dessous l'extrait de code pour le même: 

public void mouseHover(By targetedLocator) {
   try {
       WebElement targetedElement = driver.findElement(targetedLocator);
       Actions builder = new Actions(driver);
       builder.moveToElement(targetedElement).build().perform();
       BASE_LOGGER.info("Successfully performed the Mouse hover in Selenium action ");
   } catch (Exception e) {
       String exceptionData = e.getCause().getMessage();
       BASE_LOGGER.error("Error encountered i.e : " + exceptionData + " while performing Mouse hover in Selenium ");
   }
}

Pour en savoir plus sur tous les Commande Selenium webdriver que vous pouvez consulter ici .

Actions du clavier - Classe d'actions dans Selenium

Qu'est-ce que les actions du clavier et où cela est nécessaire:

Les actions de clavier signifient où les opérations sont directement effectuées à partir d'un clavier, comme disons que nous essayons d'effectuer Contrl + A ensemble ou Ctrl + C ensemble ou d'effectuer le bouton Key up ou Keydown à partir du clavier tout en interagissant avec WebElements.

Nous pouvons effectuer plusieurs interactions au clavier à l'aide de la classe Actions dans Selenium

sendKeys dans Selenium :

Nous pouvons effectuer l'opération sendKeys à l'aide de la classe Actions dans Selenium de la manière ci-dessous:

public void sendKeysWithActionClass(By locator) {
        try {
            WebElement element = driver.findElement(locator);
            Actions actions = new Actions(driver);
            actions.sendKeys("KeyBoard Data Entry ");

            // Perform Keyboard Actions ex pressing Control and c together

            actions.sendKeys(Keys.CONTROL);
            actions.sendKeys("c");
            actions.build().perform();
        } catch (Exception e) {
            String exceptionData = e.getCause().getMessage();
           
        }
    }

KeyUp dans Selenium :

De même, nous pouvons effectuer des opérations KeyUp avec la classe Actions dans Selenium de la manière ci-dessous:

    public void keyUpWithActionClass(By locator) {
        try {
            WebElement element = driver.findElement(locator);
            Actions actions = new Actions(driver);
            actions.sendKeys("KeyBoard Data Entry ");

            // Perform Keyboard Actions ex pressing Control and c together with keyUp

            actions.keyUp(Keys.CONTROL);
            actions.sendKeys("c");
            actions.build().perform();
        } catch (Exception e) {
            String exceptionData = e.getCause().getMessage();
        }
    }

KeyDown dans Selenium

Nous pouvons effectuer l'opération keyDown à l'aide de la classe Actions de nouveau dans Selenium dans l'approche ci-dessous:

public void keyDownWithActionClass(By locator) {

        try {
            WebElement element = driver.findElement(locator);
            Actions actions = new Actions(driver);
            actions.sendKeys("KeyBoard Data Entry ");

            // Perform Keyboard Actions ex pressing Control and V together with keyDown

            actions.keyDown(Keys.CONTROL);
            actions.sendKeys("v");
            actions.build().perform();
        } catch (Exception e) {
            String exceptionData = e.getCause().getMessage();

        }
    }

Conclusion: Avec ceux-ci, nous en avons terminé ici avec la classe Actions dans Selenium, Dans le prochain tutoriel JavascriptExecutor dans Selenium de manière modulaire mais exhaustive. Apprendre Exhaustivement la commande Selenium vous pouvez également vous référer ici pour vous préparer Questions d'entrevue critiques sur Selenium que vous pouvez consulter ici.

À propos de Debarghya

Moi-même Debarghya Roy, je suis un ARCHITECTE en ingénierie travaillant avec la société fortune 5 et un contributeur open source, ayant environ 12 ans d'expérience / expertise dans diverses piles technologiques.
J'ai travaillé avec diverses technologies telles que Java, C #, Python, Groovy, UI Automation (Selenium), Mobile Automation (Appium), API / Backend Automation, Performance Engineering (JMeter, Locust), Security Automation (MobSF, OwAsp, Kali Linux , Astra, ZAP, etc.), RPA, automatisation de l'ingénierie des processus, automatisation mainframe, développement back-end avec SpringBoot, Kafka, Redis, RabitMQ, pile ELK, GrayLog, Jenkins et ayant également une expérience dans les technologies cloud, DevOps, etc.
Je vis à Bangalore, en Inde avec ma femme et j'ai une passion pour les blogs, la musique, jouer de la guitare et ma philosophie de vie est l'éducation pour tous qui a donné naissance à LambdaGeeks. Permet de se connecter via linked-in - https://www.linkedin.com/in/debarghya-roy/

Laisser un commentaire

Votre adresse email n'apparaîtra pas. Les champs obligatoires sont marqués *

Geeks Lambda