Classe de ação em Selenium – Eventos de clique do mouse e teclado

Neste tutorial, aprenderemos como lidar com eventos de teclado e mouse em Selenium Driver da Web

Classe de ação em Selenium

Classe de ação em Selenium é um recurso interno fornecido pelo selenium para manipular eventos de teclado e mouse. Ele inclui várias operações, como múltiplos eventos clicando pela tecla control, eventos de arrastar e soltar e muito mais. Essas operações da classe action são realizadas usando a API de interação avançada do usuário em Selenium Driver da Web.

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 Opções e os votos de Ação classes que são necessárias ao executar esses eventos. A seguir estão os eventos de teclado e mouse mais comumente usados, fornecidos pela classe Actions.

Forma Descrição
Clique e segure() Cliques (sem soltar) na localização atual do mouse.
contextoClick() Executa um clique contextual no local atual do mouse. (Ação do botão direito do mouse)
Duplo click() Executa um clique duplo no local atual do mouse.
dragAndDrop(fonte, destino) Executa clicar e segurar no local do elemento de origem, mover para o local do elemento de destino e, em seguida, soltar o mouse.

parâmetros:

elemento de origem para emular o botão pressionado.

elemento alvo para mover e soltar o mouse.

dragAndDropBy(fonte, deslocamento x, deslocamento y) Executa clicar e segurar no local do elemento de origem, mover por um determinado deslocamento e, em seguida, soltar o mouse.

parâmetros:

elemento de origem para emular o botão pressionado.

xOffset- deslocamento de movimento horizontal.

yOffset- deslocamento de movimento vertical.

keyDown(modificador_chave) Executa um pressionamento de tecla modificadora. Não libera a tecla modificadora – as interações subsequentes podem assumir que ela foi mantida pressionada.

parâmetros:

modifier_key – qualquer uma das teclas modificadoras (Keys.ALT, Keys.SHIFT ou Keys.CONTROL)

keyUp(modificador _key) Executa uma liberação de chave.

parâmetros:

modifier_key – qualquer uma das teclas modificadoras (Keys.ALT, Keys.SHIFT ou Keys.CONTROL)

moveByOffset(deslocamento x, deslocamento y) Move o mouse de sua posição atual (ou 0,0) pelo deslocamento fornecido.

parâmetros:

deslocamento x- deslocamento horizontal. Um valor negativo significa mover o mouse para a esquerda.

deslocamento y- deslocamento vertical. Um valor negativo significa mover o mouse para baixo.

moveToElement(toElement) Move o mouse para o meio do elemento.

parâmetros:

toElement- elemento para o qual mover.

liberar() Libera o botão esquerdo do mouse pressionado no local atual do mouse
sendKeys(onElement, sequência de caracteres) Envia uma série de pressionamentos de tecla para o elemento.

parâmetros:

onElement – ​​elemento que receberá as teclas digitadas, geralmente um campo de texto

charsequence – qualquer valor de string que representa a sequência de pressionamentos de teclas a serem enviados

No exemplo a seguir, usaremos o método moveToElement() para passar o mouse sobre um Mercury Linhas da tabela de passeios. Veja o exemplo abaixo.

Tratamento de eventos de teclado e mouse

A célula mostrada acima é uma parte de um elemento. Se não passar o mouse, sua cor será #FFC455 (laranja). Depois de passar o mouse, a cor da célula fica transparente. Torna-se da mesma cor do fundo azul de toda a mesa laranja.

Passo 1) Importe o Opções e Ação classes.

Tratamento de eventos de teclado e mouse

Passo 2) Instancie um novo objeto Actions.

Tratamento de eventos de teclado e mouse

Passo 3) Instancie uma ação usando o objeto Actions na etapa 2.

Tratamento de eventos de teclado e mouse

Neste caso, usaremos o método moveToElement() porque simplesmente passaremos o mouse sobre o link “Home”. O método build() é sempre o método final utilizado para que todas as ações listadas sejam compiladas em uma única etapa.

Passo 4) Use o método perform() ao executar o objeto Action que projetamos na Etapa 3.

Tratamento de eventos de teclado e mouse

Abaixo está todo o código do WebDriver para verificar a cor de fundo do elemento antes e depois do mouse.

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 = "http://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 saída abaixo afirma claramente que a cor de fundo tornou-se transparente após passar o mouse.

Classe de ação em Selenium

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

Você pode construir uma série de ações usando as classes Action e Actions. Apenas lembre-se de fechar a série com o método build(). Considere o código de exemplo abaixo.

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

public static void main(String[] args) {
String baseUrl = "http://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() ;

}

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

Resumo

  • O tratamento de eventos especiais de teclado e mouse é feito usando a API AdvancedUserInteractions.
  • Eventos de palavra-chave e mouse usados ​​com frequência são doubleClick(), keyUp, dragAndDropBy, contextClick e sendKeys.