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.

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.
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.
Paso 2) Cree una instancia de un nuevo objeto de acciones.
Paso 3) Crea una instancia de Acción utilizando el objeto Actions del Paso 2.
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.
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.
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.
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();
}





