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.
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.
Passo 2) Instancie um novo objeto Actions.
Passo 3) Instancie uma ação usando o objeto Actions na etapa 2.
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.
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.
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.
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() ; }
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.