Clase de acciones críticas en selenio - guía absoluta 2021

Vamos a discutir y aprender el uso exhaustivo de la clase Actions en Selenium en diferentes operaciones web. La clase de acciones en Selenium se usa ampliamente para realizar varias operaciones web, como el movimiento del mouse y el teclado, que son acciones avanzadas del navegador web.

Clase de acciones en selenio
Clase de acciones en selenio

Acciones del ratón

  • Arrastra y suelta selenio
  • Haga clic y mantenga en selenio
  • moveToElement en Selenio 
  • dragAndDropBy en Selenium 
  • MoveByOffset en Selenio
  • DoubleClick en selenio
  • RightClick o ContextClick en selenium
  • Pausa en selenio
  • Desplazamiento del mouse en selenio

Acciones de teclado

  • sendKeys en Selenio
  • KeyUp en selenio
  • KeyDown en Selenio

Clase de acciones en selenio

¿Qué es la clase de acciones en selenio? 

Actions Class es una clase de Selenium Bundle Api del paquete org.openqa.selenium.interactions para manejar interacciones Web críticas y avanzadas con los usuarios a través de la automatización del navegador. Proporciona a los usuarios un controlador para realizar varias acciones de mouse y teclado a través de los diferentes métodos mencionados anteriormente.  

Clase de acciones en selenio
Clase de acciones en selenio

Discutiremos aquí todas las interacciones web a través de la clase Actions en Selenium, para comenzar con Aprendemos las interacciones del mouse y avanzamos hacia la clase de interacciones del teclado con acciones en Selenium.

Interacciones del mouse - Clase de acciones en Selenium

Arrastra y suelta selenio

Arrastrar y soltar en Selenium se puede hacer en tres enfoques diferentes con la clase Acciones en Selenium: 

  • Con el método build () 
  • Con el método dragAndDropBy ()
  • Con el método dragAndDrop ().

Arrastra y suelta Selenium con Action Class en Selenium mediante el método de compilación: 

Necesitamos tener dos elementos web para realizar Arrastrar y soltar en Selenium, como el elemento web de origen (que se va a arrastrar) y el elemento web de destino (donde se soltará el elemento web de origen, es decir, el elemento web de destino). El método siguiente es un método personalizado ( que podría usar para construir su Framework WebUtils) que realizan Arrastrar y soltar en Selenium y este método toma dos argumentos, uno es Source WebElement y otro es Destination WebElement como se mencionó anteriormente: 

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 ");
   }
}

Para aprender todo el concepto sobre arrastrar y soltar y conocer todos los enfoques para realizar Arrastrar y soltar en Selenium, haga clic aquí.

Haga clic y mantenga en selenio 

ClickAndHold es otro método importante de la clase Actions (del paquete org.openqa.selenium.interactions) en Selenium para
primero realice la operación de clic izquierdo sobre cualquier elemento web y manténgalo presionado sin soltar el mouse.

Este método se usa principalmente al realizar los escenarios de arrastrar y soltar, a continuación se muestra la imagen del código de muestra: 

Clase de acciones en selenio
haga clic y mantenga presionado -Clase de acciones en Selenium

MoveToElement en Selenio

MoveToElement es un método de la clase Actions en Selenium para realizar el movimiento a otro WebElement (Destination Webelement), que este método toma como un argumento respectivo.

Este método se usa principalmente al realizar los escenarios de arrastrar y soltar, a continuación se muestra la imagen del código de muestra: 

Mover al elemento - Clase de acciones en Selenium

Haga doble clic en selenio

Para replicar la operación de doble clic a través del mouse, necesitamos realizar doble clic a través de la clase Acciones en Selenium y podemos hacerlo en el siguiente enfoque: 

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());
   }
}

El fragmento de código anterior es un método que básicamente toma un argumento como Locator, es decir, el WebElement en el que se debe realizar el doble clic. 

clic contextual o clic derecho en selenio

Para replicar la operación de clic de contexto o clic derecho a través del mouse, necesitamos realizar el método de clic de contexto a través de la clase Actions en Selenium y podemos hacerlo en el siguiente enfoque: 

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());
   }
}

El fragmento de código anterior es un método que básicamente toma un argumento como Locator, es decir, el WebElement en el que se debe realizar el doble clic. 

Pausa en selenio 

Siempre que queramos haber introducido un retraso de tiempo entre las diferentes acciones, podríamos usar el método de pausa entre las operaciones de las acciones, como digamos si queremos tener algunos segundos de retraso entre la operación de arrastrar y soltar, entonces podemos llamar a la pausa ( ) método de clase de acciones en selenio en el siguiente enfoque: 

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 ");
   }
}

En el método anterior se necesitan tres argumentos: un WebElement de origen, otro argumento es el elemento de destino y el último es para timeUnit, es decir, el retardo de tiempo que queremos introducir usando pause () en Selenium.

Desplazamiento del mouse en selenio

La operación Mouse Hover en Selenium se puede lograr usando la clase Actions en Selenium, básicamente, una vez que estemos enfocados con cualquier webElement y desde allí, queremos colocar el cursor del mouse sobre cualquier otro elemento mediante esta operación Mouse Hover, y este WebElement donde que queremos tomar nuestro cursor del mouse se llama Target WebElement. 

A continuación se muestra el fragmento de código para el mismo: 

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 ");
   }
}

Para conocer todos los Comando de Selenium webdriver puede consultar aquí .

Acciones de teclado - Clase de acciones en Selenium

Qué son las acciones del teclado y dónde se requiere:

Las acciones del teclado significan que las operaciones se realizan directamente desde un teclado, como digamos que estamos tratando de realizar Contrl + A juntos o Control + C juntos o ejecutando el botón Key up o Keydown desde el teclado mientras interactuamos con WebElements.

Podemos realizar varias interacciones de teclado con la ayuda de la clase Actions en Selenium

sendKeys en Selenio :

Podemos realizar la operación sendKeys con la ayuda de la clase Actions en Selenium de la siguiente manera:

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 en selenio :

De manera similar, podemos realizar operaciones KeyUp con la clase Actions en Selenium de la siguiente manera:

    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 en Selenio

Podemos realizar la operación keyDown con la ayuda de la clase Actions de nuevo en Selenium en el siguiente enfoque:

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();

        }
    }

Conclusión: Con esto hemos terminado aquí con la clase Actions en Selenium, en el próximo tutorial JavascriptExecutor en Selenium de manera modular pero exhaustiva. Aprender Exhaustivamente el comando Selenium también puede consultar aquí para prepararse para Puede consultar las preguntas críticas de la entrevista de Selenium aquí.

Sobre Debarghya

Yo mismo, Debarghya Roy, soy un ARQUITECTO de ingeniería que trabaja con una compañía de Fortune 5 y un colaborador de código abierto, con alrededor de 12 años de experiencia / conocimientos en varias tecnologías.
He trabajado con diversas tecnologías como 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, automatización de ingeniería de procesos, automatización de mainframe, desarrollo de back-end con SpringBoot, Kafka, Redis, RabitMQ, ELK stack, GrayLog, Jenkins y también con experiencia en tecnologías de nube, DevOps, etc.
Vivo en Bangalore, India con mi esposa y tengo pasión por los blogs, la música, tocar la guitarra y mi Filosofía de vida es Educación para Todos, que dio origen a LambdaGeeks. Vamos a conectarnos a través de enlaces: https://www.linkedin.com/in/debarghya-roy/

Deja un comentario

Tu dirección de correo electrónico no será publicada.Los campos obligatorios están marcados *

Frikis Lambda