Clase de acción en Selenium

⚡ Resumen inteligente

Clase de acción en Selenium Administra eventos avanzados de teclado y ratón, como pasar el cursor, arrastrar y soltar, clic derecho y combinaciones de teclas, mediante la API de Interacciones Avanzadas del Usuario. Este tutorial explica las clases Actions y Action, los métodos clave y cómo encadenar varias interacciones en una sola secuencia.

  • 🖱️ Propósito principal: La clase Actions automatiza eventos compuestos de ratón y teclado que el método básico click() no puede.
  • 🔑 Dos clases: Actions construye la interacción; Action almacena la secuencia compilada para ejecutar.
  • 🧱 Construye y luego ejecuta: Encadena los métodos, finaliza con build() y ejecuta con perform().
  • 📋 Métodos clave: moveToElement(), dragAndDrop(), keyDown()/keyUp(), contextClick() y sendKeys().
  • 🤖 Habilitación de IA: Los asistentes de IA generan código de clase de acción y localizadores de autorreparación durante las pruebas de interacción.

Salida al pasar el ratón por encima

Clase de acción en Selenium

Clase de acción en Selenium es una función integrada para manejar eventos de teclado y ratón. Admite operaciones como clics múltiples con la tecla Control, arrastrar y soltar, y muchas más. Estas operaciones se realizan utilizando la API de interacciones de usuario avanzadas en Selenium Controlador web.

Manejo de eventos de teclado y mouse

El manejo de eventos especiales de teclado y ratón se realiza mediante el API de interacciones de usuario avanzadas. Contiene el Acciones y Acción: Clases necesarias para ejecutar estos eventos. A continuación se enumeran los eventos de teclado y ratón más utilizados que proporciona la clase Actions.

Método Descripción
hacer clic y mantener() Hace clic (sin soltar) en la ubicación actual del mouse.
contextoClick() Realiza un clic con el botón derecho del ratón en la posición actual del cursor.
doble clic() Realiza un doble clic en la ubicación actual del mouse.
arrastrar y soltar (fuente, destino) Mantén pulsado el elemento de origen, mueve el ratón al elemento de destino y luego suelta el botón. Parámetros: origen (elemento sobre el que pulsar), destino (elemento donde soltar).
dragAndDropBy(fuente, desplazamiento x, desplazamiento y) Mantén pulsado el elemento de origen, se desplaza una distancia determinada y luego suelta. Parámetros: origen, desplazamiento horizontal (x) y desplazamiento vertical (y).
teclaAbajo(clave_modificador) Pulsa una tecla modificadora sin soltarla, de modo que las interacciones posteriores asumen que permanece pulsada. Parámetro: una tecla modificadora (Keys.ALT, Keys.SHIFT o Keys.CONTROL).
teclaUp(tecla_modificadora) Libera una tecla modificadora. Parámetro: una tecla modificadora (Keys.ALT, Keys.SHIFT o Keys.CONTROL).
moveByOffset(desplazamiento x, desplazamiento y) Mueve el ratón desde su posición actual (o 0,0) según el desplazamiento especificado. Un valor negativo en x lo mueve hacia la izquierda; un valor negativo en y lo mueve hacia arriba.
moverAElemento(aElemento) Mueve el ratón al centro del elemento. Parámetro: el elemento al que se desea mover.
lanzamiento() Suelta el botón izquierdo del ratón que se encuentra pulsado en la ubicación actual.
enviarKeys(onElement, secuencia de caracteres) Envía una serie de pulsaciones de teclas a un elemento. Parámetros: onElement (normalmente un campo de texto), charsequence (las pulsaciones de teclas a enviar).

En el siguiente ejemplo, usamos el moveToElement() método para pasar el cursor sobre uno de los Mercury Filas de mesas de visitas guiadas.

Manejo de eventos de teclado y ratón

La celda que se muestra arriba es parte de una Elemento. Cuando no se pasa el cursor sobre él, su color es #FFC455 (naranja). Al pasar el cursor sobre él, el color de la celda se vuelve transparente y coincide con el fondo de la tabla circundante.

Paso 1) Importar el Acciones y Acción: clases.

Importar acciones y clases de acción

Paso 2) Cree una instancia de un nuevo objeto de acciones.

Instanciar objeto Acciones

Paso 3) Crea una instancia de Acción utilizando el objeto Actions del Paso 2.

Instanciar objeto de acción

Aquí usamos el moveToElement() método para pasar el cursor sobre el enlace “Inicio”. El build() Este método siempre se llama al final para que todas las acciones enumeradas se compilen en un solo paso.

Paso 4) Use el perform() método para ejecutar el objeto Acción diseñado en el Paso 3.

Realizar la acción

A continuación se muestra el código completo de WebDriver que comprueba el color de fondo del elemento antes y después de pasar el ratón por encima.

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

El resultado que se muestra a continuación demuestra que el color de fondo se volvió transparente al pasar el ratón por encima.

Salida al pasar el ratón por encima

Construyendo una serie de acciones múltiples

Puedes crear una serie de acciones usando las clases Action y Actions. Recuerda cerrar la serie con el build() método. Considere el código de ejemplo a continuación.

Construir una serie de acciones múltiples

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

Serie de acciones de salida

Preguntas Frecuentes

La clase Action representa una secuencia compilada de interacciones de teclado y ratón construidas con la clase Actions. Se ejecuta a través de la API de interacciones de usuario avanzadas en Selenium Controlador web.

Acciones (plural) es el constructor que se usa para encadenar interacciones como pasar el ratón por encima y hacer clic. Acción (singular) es el objeto compilado que devuelve build() y que se ejecuta con perform().

La función build() compila todas las interacciones encadenadas en una única acción compuesta. Siempre se llama al final, justo antes de perform(), por lo que los pasos en cola se ejecutan juntos como una sola secuencia.

El método perform() ejecuta la acción creada en el navegador. Sin él, las interacciones encadenadas solo se ponen en cola y nunca se envían realmente a la página.

Utiliza moveToElement(element) en un objeto Actions, luego llama a build() y perform(). Esto mueve el cursor al centro del elemento y activa cualquier comportamiento al pasar el ratón por encima, como un menú desplegable.

Es compatible con clickAndHold, contextClick, doubleClick, dragAndDrop, dragAndDropBy, keyDown, keyUp, moveByOffset, moveToElement, release y sendKeys, cubriendo así la mayoría de las interacciones avanzadas.

Las herramientas de IA utilizan localizadores autorreparables que se adaptan cuando los elementos cambian, lo que reduce los fallos intermitentes en las pruebas de desplazamiento y arrastrar y soltar. Además, recomiendan rutas XPath estables y añaden esperas inteligentes automáticamente.

Sí. Los asistentes de código de IA convierten un escenario sencillo como "pasar el cursor sobre Inicio y luego hacer clic con el botón derecho" en una cadena de acciones funcional con build() y perform(), y sugieren localizadores robustos.

Resumir este post con: