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.

  • 🖱️ Objetivo principal: A classe Actions automatiza eventos compostos de mouse e teclado que o método básico click() não consegue realizar.
  • 🔑 Duas classes: Ações constrói a interação; Ação armazena a sequência compilada a ser executada.
  • 🧱 Construir e depois executar: Encadeie os métodos, finalize com build() e execute com perform().
  • 📋 Métodos principais: moveToElement(), dragAndDrop(), keyDown()/keyUp(), contextClick() e sendKeys().
  • 🤖 Habilitação de IA: Assistentes de IA geram código de classe Action e localizadores de autorreparação durante testes de interação.

Saída ao passar o cursor

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.

Gerenciamento de eventos de teclado e mouse

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.

Importar ações e classes de ação

Passo 2) Instancie um novo objeto Actions.

Instanciar objeto de ações

Passo 3) Instancie uma ação usando o objeto Actions da Etapa 2.

Instanciar objeto de ação

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.

Execute a ação

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.

Saída ao passar o cursor

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.

Construindo uma série de múltiplas ações

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

Série de ações de saída

Perguntas Frequentes

A classe Action representa uma sequência compilada de interações de teclado e mouse, construída com a classe Actions. Ela é executada por meio da API Advanced User Interactions em Selenium WebDriver.

Ações (plural) é o construtor usado para encadear interações como passar o mouse e clicar. Ação (singular) é o objeto compilado retornado por build() que você executa com perform().

A função `build()` compila todas as interações encadeadas em uma única ação composta. Ela é sempre chamada por último, imediatamente antes de `perform()`, para que as etapas enfileiradas sejam executadas juntas como uma única sequência.

A função `perform()` executa a ação criada no navegador. Sem ela, as interações encadeadas são apenas enfileiradas e nunca são realmente enviadas para a página.

Use o método `moveToElement(element)` em um objeto `Actions`, depois chame os métodos `build()` e `perform()`. Isso move o cursor para o centro do elemento e aciona qualquer comportamento de foco, como um menu suspenso.

Ele suporta os comandos clickAndHold, contextClick, doubleClick, dragAndDrop, dragAndDropBy, keyDown, keyUp, moveByOffset, moveToElement, release e sendKeys — abrangendo a maioria das interações avançadas.

As ferramentas de IA usam localizadores com capacidade de autorreparação que se adaptam às mudanças nos elementos, reduzindo falhas intermitentes em testes de interação por aproximação e arrastar e soltar. Elas também recomendam XPaths estáveis ​​e adicionam esperas inteligentes automaticamente.

Sim. Os assistentes de código de IA transformam um cenário em linguagem simples, como "passe o cursor sobre Início e clique com o botão direito", em uma cadeia de ações funcional com build() e perform(), e sugerem localizadores robustos.

Resuma esta postagem com: