Classe de ação em Selenium
⚡ Resumo Inteligente
Classe de ação em Selenium Lida com eventos avançados de teclado e mouse, como passar o cursor, arrastar e soltar, clique com o botão direito e combinações de teclas por meio da API de Interações Avançadas do Usuário. Este tutorial explica as classes Actions e Action, os principais métodos e como encadear várias interações em uma única sequência.
Classe de ação em Selenium
Classe de ação em Selenium é um recurso integrado para lidar com eventos de teclado e mouse. Ele suporta operações como cliques múltiplos com a tecla Control, arrastar e soltar e muito mais. Essas operações são realizadas usando a API de Interações Avançadas do Usuário em Selenium WebDriver.
Tratamento de eventos de teclado e mouse
O tratamento de eventos especiais de teclado e mouse é feito usando o API de interações avançadas do usuário. Contém o Ação e Ação Classes necessárias para executar esses eventos. Os eventos de teclado e mouse mais comuns fornecidos pela classe Actions estão listados abaixo.
| Forma | Descrição |
|---|---|
| Clique e segure() | Cliques (sem soltar) na localização atual do mouse. |
| contextoClick() | Executa um clique contextual (clique com o botão direito do mouse) na posição atual do cursor. |
| Duplo click() | Executa um clique duplo no local atual do mouse. |
| dragAndDrop(fonte, destino) | Clicar e manter pressionado o botão do mouse no elemento de origem, mover o cursor para o elemento de destino e, em seguida, soltar o botão. Parâmetros: origem (elemento no qual clicar), destino (elemento no qual soltar o botão). |
| dragAndDropBy(fonte, deslocamento x, deslocamento y) | Clicar e manter pressionado no elemento de origem, mover o cursor por um determinado deslocamento e, em seguida, soltar. Parâmetros: origem, deslocamento horizontal (xOffset), deslocamento vertical (yOffset). |
| keyDown(modificador_chave) | Pressiona uma tecla modificadora sem soltá-la, de modo que as interações subsequentes pressupõem que ela permaneça pressionada. Parâmetro: uma tecla modificadora (Keys.ALT, Keys.SHIFT ou Keys.CONTROL). |
| teclaUp(tecla_modificadora) | Libera uma tecla modificadora. Parâmetro: uma tecla modificadora (Keys.ALT, Keys.SHIFT ou Keys.CONTROL). |
| moveByOffset(deslocamento x, deslocamento y) | Move o cursor do mouse a partir de sua posição atual (ou 0,0) pelo deslocamento especificado. Um valor negativo em x move o cursor para a esquerda; um valor negativo em y move o cursor para cima. |
| moveToElement(toElement) | Move o cursor para o centro do elemento. Parâmetro: o elemento para o qual mover o cursor. |
| liberar() | Libera o botão esquerdo do mouse pressionado na posição atual. |
| sendKeys(onElement, sequência de caracteres) | Envia uma sequência de teclas para um elemento. Parâmetros: onElement (geralmente um campo de texto), charsequence (as teclas a serem enviadas). |
No exemplo a seguir, usamos o moveToElement() método para passar o cursor sobre um dos Mercury Fileiras de mesas de visitas guiadas.
A célula mostrada acima faz parte de uma elemento. Quando não está posicionado sobre ele, sua cor é #FFC455 (laranja). Ao posicionar o cursor sobre ele, a cor da célula torna-se transparente e combina com o fundo da tabela ao redor.
Passo 1) Importe o Ação e Ação classes.
Passo 2) Instancie um novo objeto Actions.
Passo 3) Instancie uma ação usando o objeto Actions da Etapa 2.
Aqui usamos o moveToElement() método para passar o cursor sobre o link “Início”. O build() O método é sempre chamado por último, para que todas as ações listadas sejam compiladas em uma única etapa.
Passo 4) Use o perform() Método para executar o objeto Action projetado na Etapa 3.
Abaixo está o código completo do WebDriver que verifica a cor de fundo do elemento antes e depois de passar o cursor sobre ele.
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();
}
}
A imagem abaixo mostra que a cor de fundo ficou transparente após o cursor do mouse passar sobre a área.
Construindo uma série de múltiplas ações
Você pode criar uma série de ações usando as classes Action e Actions. Lembre-se de fechar a série com o build() método. Considere o código de exemplo abaixo.
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();
}






