Como clicar na imagem em Selenium Driver da Web

โšก Resumo Inteligente

Clique na imagem em Selenium O WebDriver exige seletores CSS ou estratรฉgias XPath porque os elementos de imagem nรฃo expรตem o texto do link. Este artigo explica como localizar a imagem, acionar a aรงรฃo de clique e verificar se a navegaรงรฃo foi bem-sucedida.

  • ๐Ÿ–ฑ๏ธ Aรงรฃo principal: Use driver.findElement(By.cssSelector(โ€ฆ)).click() para realizar um clique em qualquer elemento de imagem renderizado dentro de uma รขncora.
  • ๐ŸŽฏ Escolha do localizador: Os mรฉtodos `By.linkText` e `By.partialLinkText` nรฃo funcionam para imagens, sendo necessรกrio usar `By.cssSelector` ou `By.xpath`.
  • ๐Ÿงช Etapa de verificaรงรฃo: Confirme se o clique foi bem-sucedido comparando o novo tรญtulo da pรกgina com driver.getTitle() e verificando se ele corresponde ร  string de destino esperada.
  • ๐Ÿค– Assistรชncia de IA: Os plugins de IA modernos sugerem seletores CSS estรกveis โ€‹โ€‹e localizadores de correรงรฃo automรกtica quando a marcaรงรฃo do aplicativo ou os valores dos atributos sรฃo alterados.
  • ๐Ÿ› ๏ธ Armadilhas comuns: Imagens ocultas, carregadas lentamente ou sobrepostas geralmente exigem esperas explรญcitas, rolagem para visualizaรงรฃo ou JavaScript click para se registrar corretamente.

Clique na imagem em Selenium

Clicar em uma imagem Selenium O WebDriver รฉ uma ferramenta comum quando um รญcone, logotipo ou miniatura funciona como um link de navegaรงรฃo. Como as imagens nรฃo contรชm texto visรญvel, os localizadores tradicionais de texto para links falham e uma estratรฉgia de seleรงรฃo mais confiรกvel se faz necessรกria.

Acessando links de imagens

Os links de imagem sรฃo รขncoras em pรกginas da web representadas por uma imagem que, ao ser clicada, leva o navegador a uma janela ou pรกgina diferente.

Como sรฃo imagens, nรฃo podemos usar os mรฉtodos By.linkText() e By.partialLinkText() porque os links de imagem nรฃo tรชm nenhum texto de link.

Nesse caso, devemos recorrer ao uso de `By.cssSelector` ou `By.xpath`. O primeiro mรฉtodo รฉ geralmente preferido devido ร  sua simplicidade e legibilidade.

No exemplo abaixo, acessaremos o logotipo โ€œFacebookโ€ na parte superior esquerda da pรกgina de recuperaรงรฃo de senha do Facebook.

Acessando links de imagens

Usaremos o seletor CSS `By.cssSelector` e o atributo "title" do elemento para acessar o link da imagem. Em seguida, verificaremos se o navegador foi redirecionado para a pรกgina inicial do Facebook.

Java Code Exemplo

Os seguintes Selenium O trecho de cรณdigo do WebDriver inicia o Chrome, abre a pรกgina de recuperaรงรฃo de senha do Facebook, clica na imagem do logotipo do Facebook e verifica o tรญtulo da pรกgina resultante.

package newproject;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

public class MyClass {

    public static void main(String[] args) {
        String baseUrl = "https://www.facebook.com/login/identify?ctx=recover";
        System.setProperty("webdriver.chrome.driver", "G:\\chromedriver.exe");
        WebDriver driver = new ChromeDriver();

        driver.get(baseUrl);
        // click on the "Facebook" logo on the upper left portion
        driver.findElement(By.cssSelector("a[title=\"Go to Facebook home\"]")).click();

        // verify that we are now back on Facebook's homepage
        if (driver.getTitle().equals("Facebook - log in or sign up")) {
            System.out.println("We are back at Facebook's homepage");
        } else {
            System.out.println("We are NOT in Facebook's homepage");
        }
        driver.close();
    }
}

Resultado

Clique na imagem em Selenium Driver da Web

Melhores prรกticas para clicar em imagens

Alguns hรกbitos tornam a automaรงรฃo de cliques em imagens mais confiรกvel em diferentes navegadores e tamanhos de tela.

  • Prefira um atributo estรกvel como title, alt, aria-label ou data-* em vez de caminhos CSS profundamente aninhados.
  • Adicione um WebDriverWait explรญcito para que o ElementToBeClickable seja ativado antes de executar o clique.
  • Para imagens com carregamento lento, role o elemento para que ele fique visรญvel com JavascriptPrimeiro o executor.
  • Se uma sobreposiรงรฃo transparente interceptar o clique, volte a usar uma camada transparente. JavaClique no elemento subjacente usando o script.
  • Valide a navegaรงรฃo com driver.getTitle() ou um elemento รบnico na pรกgina de destino.

Como a IA aprimora as estratรฉgias de localizaรงรฃo de imagens

Ferramentas de teste assistidas por IA, como TestimMabl e Healenium analisam o DOM ao redor de uma imagem e propรตem localizadores com capacidade de autocorreรงรฃo. Quando um nome de classe ou atributo muda apรณs uma atualizaรงรฃo, o framework o substitui automaticamente pela alternativa mais estรกvel, o que reduz falhas intermitentes na navegaรงรฃo baseada em รญcones.

Os engenheiros tambรฉm podem usar o ChatGPT ou o GitHub Copilot para gerar trechos de cรณdigo WebDriver, sugerir expressรตes CSS ou XPath robustas para uma imagem e elaborar asserรงรตes para a pรกgina que serรก carregada apรณs o clique. O cรณdigo gerado ainda deve ser revisado quanto ร  correรงรฃo e ao tratamento de esperas e sobreposiรงรตes.

Conclusรฃo

Clicar em links de imagens em Selenium O WebDriver รฉ simples de usar depois que vocรช escolhe um localizador estรกvel. Usar `By.cssSelector` com o atributo `title` ou `alt` รฉ a abordagem mais legรญvel; usar `By.xpath` รฉ a alternativa quando a marcaรงรฃo รฉ complexa; e aguardar explicitamente torna o script confiรกvel em vรกrias execuรงรตes.

Perguntas Frequentes

Localize a imagem com `By.cssSelector` ou `By.xpath` usando um atributo estรกvel como `title`, `alt` ou `aria-label`, e entรฃo chame `.click()` no elemento da web retornado. Verifique o resultado com `driver.getTitle()` ou um elemento รบnico na pรกgina de destino.

Sim. Ferramentas como TestimMabl e ChatGPT inspecionam o DOM circundante e sugerem um seletor estรกvel com base nos atributos title, alt, aria-label ou data. Os engenheiros ainda devem revisar o localizador gerado para garantir sua unicidade e resiliรชncia.

Um localizador com autorrecuperaรงรฃo รฉ um recurso de IA que utiliza um seletor alternativo quando o original falha. Frameworks como Healenium e Mabl monitoram as mudanรงas de atributos em torno de uma imagem e escolhem a substituiรงรฃo mais estรกvel, o que reduz a instabilidade dos testes apรณs atualizaรงรตes da interface do usuรกrio.

Ambos os localizadores correspondem ao texto visรญvel dentro de uma รขncora. Um link de imagem envolve uma tag `<img>` e nรฃo expรตe nenhum nรณ de texto, portanto a correspondรชncia sempre retorna vazio. Use `By.cssSelector` ou `By.xpath` com `title`, `alt` ou `aria-label` em vez disso.

Se uma sobreposiรงรฃo, modal ou dica de ferramenta bloquear a imagem, role-a para que fique visรญvel com JavascriptExecutor e adicione um WebDriverWait para ElementToBeClickable. Como alternativa, execute um JavaClique no elemento da Web para ignorar a sobreposiรงรฃo.ping camada.

Verifique o novo tรญtulo da pรกgina com driver.getTitle(), o tรญtulo atual. URL com driver.getCurrentUrl(), ou a presenรงa de um elemento รบnico na pรกgina de destino. Uma combinaรงรฃo dessas verificaรงรตes dรก ao teste a certeza de que o clique realmente acionou a navegaรงรฃo.

Resuma esta postagem com: