Classe de ações críticas em selênio - Guia absoluto 2021

Vamos discutir e aprender o uso exaustivo da classe Actions no Selenium em diferentes operações da web. A classe Actions no Selenium é amplamente usada para realizar várias operações na web, como movimentos do mouse e do teclado, que são ações avançadas do navegador da web.

Ações do mouse

Ações de teclado

Aula de ações em selênio

O que é a classe Actions no Selenium: 

Aula de ações em selênio
Aula de ações no Selenium

A classe Actions é uma classe do Selenium Bundle Api do pacote org.openqa.selenium.interactions para lidar com interações críticas e avançadas da Web com usuários por meio da automação do navegador. Fornece aos usuários uma alça para realizar várias ações de mouse e teclado por meio de diferentes métodos mencionados acima.  

Aula de ações em selênio
Aula de ações no Selenium

Discutiremos aqui todas as interações da Web por meio da classe Actions no Selenium, para começar com Aprendemos as interações do mouse e avançamos para a classe Interações do teclado com ações no Selenium.

Interações do mouse - classe de ações no Selenium

Arraste e solte no selênio

Arrastar e soltar no Selenium pode ser feito em três abordagens diferentes com a classe Actions no Selenium: 

Arraste e solte no Selenium com Action Class no Selenium via método de compilação: 

Precisamos ter dois elementos da web para executar o Drag and Drop no Selenium, como Source WebElement (que deve ser arrastado) e Destination WebElement (onde o Source WebElement deve ser solto, ou seja, o Destination WebElement). O método a seguir é um método personalizado ( que você poderia usar para construir seu Framework WebUtils) que executam o Drag and Drop no Selenium e este método leva dois argumentos, um é Source WebElement e outro é Destination WebElement conforme mencionado anteriormente: 

public void dragAndDrop(Por origem, Por destino) { try { WebElement sourceElement = driver.findElement(source); WebElement destinationElement = driver.findElement(destination); Construtor de ações = new Actions(driver); Ação dragAndDrop = builder.clickAndHold(sourceElement).moveToElement(destinationElement) .release(destinationElement).build(); dragAndDrop.perform(); BASE_LOGGER.info("Executada com sucesso a ação de arrastar e soltar "); } catch (Exception e) { String exceptionData = e.getCause().getMessage(); BASE_LOGGER.error("Erro encontrado, por exemplo: " + exceptionData + " ao executar DragAndDrop "); } }

Para aprender todo o conceito sobre arrastar e soltar e obter todas as abordagens para realizar o Arrastar e Soltar no Selenium, clique aqui.

Clique e segure no selênio 

ClickAndHold é outro método importante da classe Actions (do pacote org.openqa.selenium.interactions) no Selenium para
primeiro execute a operação do botão esquerdo sobre qualquer webElement e segure-o sem soltar o mouse.

Este método é usado principalmente durante a execução de cenários de arrastar e soltar, abaixo está o exemplo de imagem de código: 

Aula de ações em selênio
clique e segure - Classe de ações no Selenium

MoveToElement em Selenium

MoveToElement é um método da classe Actions no Selenium para realizar o movimento para outro WebElement (Destination Webelement), que esse método assume como um respectivo argumento.

Este método é usado principalmente durante a execução de cenários de arrastar e soltar, abaixo está o exemplo de imagem de código: 

MoveToElement
Mover para o elemento - classe de ações no Selenium

Clique duplo no selênio

Para replicar a operação de clique duplo via mouse, precisamos realizar o clique duplo via classe Actions no Selenium e podemos fazer isso da seguinte maneira: 

public void doubleClick(By locator) { try { Elemento WebElement = driver.findElement(locator); Ações ações = new Ações(driver); actions.doubleClick(element).perform(); BASE_LOGGER.info("Realizou o duplo click no elemento : " + locator); } catch (StaleElementReferenceException e) { BASE_LOGGER.error("O elemento não está anexado ao documento da página " + e.getCause().getMessage()); } catch (NoSuchElementException e) { BASE_LOGGER.error("Elemento " + localizador + " não foi encontrado no DOM " + e.getCause().getMessage()); } catch (Exception e) { BASE_LOGGER.error("Elemento " + localizador + " não foi clicável " + e.getCause().getMessage()); } }

O trecho de código acima é um método que basicamente leva um argumento como Locator, ou seja, o WebElement no qual o clique duplo deve ser executado. 

clique no contexto ou clique com o botão direito no Selenium

Para replicar a operação de clique de contexto ou clique com o botão direito do mouse, precisamos executar o método de clique de contexto por meio da classe Actions no Selenium e podemos fazer isso da seguinte maneira: 

public void rightClick(Por localizador) { try { Elemento WebElement = driver.findElement(localizador); Ações ações = new Ações(driver); actions.contextClick(element).perform(); BASE_LOGGER.info("Executado o contexto Clique no Elemento : " + localizador); } catch (StaleElementReferenceException e) { BASE_LOGGER.error("O elemento não está anexado ao documento da página " + e.getCause().getMessage()); } catch (NoSuchElementException e) { BASE_LOGGER.error("Elemento " + localizador + " não foi encontrado no DOM " + e.getCause().getMessage()); } catch (Exception e) { BASE_LOGGER.error("Elemento " + localizador + " não foi clicável " + e.getCause().getMessage()); } }

O trecho de código acima é um método que basicamente leva um argumento como Locator, ou seja, o WebElement no qual o clique duplo deve ser executado. 

Pausa no Selênio 

Sempre que quisermos introduzir qualquer atraso de tempo entre diferentes ações, podemos usar o método de pausa entre as operações de ações, como digamos, se quisermos ter alguns segundos de atraso entre a operação de arrastar e soltar, então podemos chamar a pausa ( ) método da Classe de Ações em Selênio na abordagem abaixo: 

public void pauseBetweenActions(By source,By destination, int timeUnit) { try { WebElement sourceElement = driver.findElement(source); WebElement destinationElement = driver.findElement(destination); Construtor de ações = new Actions(driver); builder.clickAndHold(sourceElement).moveToElement(destinationElement).pause(timeUnit).release(destinationElement).build().perform(); BASE_LOGGER.info("Executada com sucesso a ação de arrastar e soltar "); } catch (Exception e) { String exceptionData = e.getCause().getMessage(); BASE_LOGGER.error("Erro encontrado, por exemplo: " + exceptionData + " ao executar DragAndDrop "); } }

No método acima, ele leva três argumentos: um WebElement de origem, outro argumento é o elemento de destino e o último é para timeUnit, ou seja, o atraso de tempo que queremos introduzir usando pause () no Selenium.

Passe o mouse em selênio

O passar do mouse na operação Selenium pode ser alcançado usando a classe Actions no Selenium, basicamente, uma vez que estamos em foco com qualquer webElement e a partir daí, queremos passar o cursor do mouse para qualquer outro elemento por esta operação do mouse, e este WebElement onde queremos levar o cursor do mouse é chamado de Target WebElement. 

Abaixo está o snippet de código para o mesmo: 

public void mouseHover(Por targetLocator) { try { WebElement targetElement = driver.findElement(targetedLocator); Construtor de ações = new Actions(driver); builder.moveToElement(targetedElement).build().perform(); BASE_LOGGER.info("Executado com sucesso o foco do mouse na ação Selenium "); } catch (Exception e) { String exceptionData = e.getCause().getMessage(); BASE_LOGGER.error("Erro encontrado, por exemplo: " + exceptionData + " ao passar o mouse no Selenium "); } }

Para aprender sobre todos os Comando do webdriver Selenium que você pode consultar aqui .

Ações de teclado - classe de ações em Selenium

O que são ações do teclado e onde são necessárias:

As ações do teclado significam onde as operações são realizadas diretamente a partir de um teclado, como digamos que estamos tentando executar Contrl + A juntos ou Control + C juntos ou executar o botão Key up ou Keydown no teclado enquanto interagimos com WebElements.

Podemos realizar várias interações de teclado com a ajuda da classe Actions no Selenium

sendKeys em Selenium :

Podemos realizar a operação sendKeys com a ajuda da classe Actions no Selenium da maneira abaixo:

public void sendKeysWithActionClass(Por localizador) { try { Elemento WebElement = driver.findElement(localizador); Ações ações = new Ações(driver); actions.sendKeys("Entrada de dados do teclado"); // Executar ações do teclado pressionando Control ec juntos actions.sendKeys(Keys.CONTROL); actions.sendKeys("c"); actions.build().perform(); } catch (Exception e) { String exceptionData = e.getCause().getMessage(); } }

KeyUp no Selenium :

Da mesma forma, podemos realizar operações KeyUp com a classe Actions no Selenium da maneira abaixo:

    public void keyUpWithActionClass(por localizador) { try { elemento WebElement = driver.findElement(localizador); Ações ações = new Ações(driver); actions.sendKeys("Entrada de dados do teclado"); // Executar ações do teclado pressionando Control e c junto com keyUp actions.keyUp(Keys.CONTROL); actions.sendKeys("c"); actions.build().perform(); } catch (Exception e) { String exceptionData = e.getCause().getMessage(); } }

KeyDown em Selenium

Podemos realizar a operação keyDown com a ajuda da classe Actions novamente no Selenium na abordagem abaixo:

public void keyDownWithActionClass(Por localizador) { try { Elemento WebElement = driver.findElement(localizador); Ações ações = new Ações(driver); actions.sendKeys("Entrada de dados do teclado"); // Executar Ações do Teclado pressionando Control e V junto com keyDown actions.keyDown(Keys.CONTROL); actions.sendKeys("v"); actions.build().perform(); } catch (Exception e) { String exceptionData = e.getCause().getMessage(); } }

Conclusão: Com isso terminamos aqui com a classe Actions em Selenium, no próximo tutorial JavascriptExecutor em Selenium de forma modular mas exaustiva. Aprender Exaustivamente o comando Selenium você pode consultar aqui também para se preparar para Perguntas críticas da entrevista do Selenium que você pode consultar aqui.

Deixe um comentário