Como verificar a dica de ferramenta em Selenium

โšก Resumo Inteligente

Verifique a dica de ferramenta em Selenium O WebDriver abrange dois padrรตes confiรกveis โ€‹โ€‹para verificar o texto da dica de ferramenta: ler diretamente o atributo `title` do HTML e usar a API Actions para passar o mouse sobre elementos que renderizam dinamicamente. JavaDicas de ferramentas em script ou jQuery.

  • ๐Ÿ’ก Princรญpio-chave: Uma dica de ferramenta รฉ um texto exibido ao passar o cursor sobre um elemento, portanto, a estratรฉgia de verificaรงรฃo depende de onde o navegador armazena esse texto no DOM.
  • ๐Ÿท๏ธ Dicas de ferramentas estรกticas: Para dicas de ferramentas baseadas em tรญtulo HTML, chame getAttribute("title") or getDomAttribute("title") e compare com a sequรชncia esperada.
  • ๐Ÿ–ฑ๏ธ Dicas de ferramentas dinรขmicas: Para dicas de ferramentas em jQuery, CSS ou plugins, use a classe Actions com moveToElement(target).build().perform() antes de ler o elemento da dica de ferramenta.
  • โฑ๏ธ Melhor Prรกtica: Aguarde atรฉ que o contรชiner da dica de ferramenta fique visรญvel apรณs o cursor passar sobre ela e, em seguida, insira o texto com getText() Para evitar leituras obsoletas ou vazias.
  • ๐Ÿš€ Selenium Dica de 4: Par Selenium Gerenciador com esperas explรญcitas em vez de Thread.sleep para verificaรงรตes de dicas de ferramentas estรกveis โ€‹โ€‹e sem dependรชncias do caminho do driver.

Verifique a dica de ferramenta em Selenium webdriver

Dica em Selenium

A Dica em Selenium ร‰ um pequeno texto que aparece quando o cursor do mouse passa sobre um objeto em uma pรกgina da web. O objeto pode ser um link, uma imagem, um botรฃo ou uma รกrea de texto. O texto da dica de ferramenta geralmente fornece mais informaรงรตes sobre o elemento sob o cursor.

Tradicionalmente, as dicas de ferramentas eram implementadas como um atributo "tรญtulo" em um elemento. O valor desse atributo era exibido como uma dica de ferramenta ao passar o mouse sobre o elemento. Trata-se de um texto estรกtico que fornece informaรงรตes sobre o elemento, sem qualquer formataรงรฃo.

Atualmente, muitos plugins estรฃo disponรญveis para a implementaรงรฃo de dicas de ferramentas. Dicas de ferramentas avanรงadas com estilos, renderizaรงรฃo, imagens e links sรฃo criadas usando... JavaPlugins de script ou jQuery, ou com dicas de ferramentas usando apenas CSS.

  • Para acessar ou verificar dicas de ferramentas estรกticas implementadas por meio do atributo "title" do HTML, use o getAttribute("title") Mรฉtodo aplicado ao WebElement. O valor retornado (o texto da dica de ferramenta) รฉ comparado com um valor esperado para verificaรงรฃo.
  • Para outras implementaรงรตes de dicas de ferramentas, use a "API de Interaรงรตes Avanรงadas do Usuรกrio" fornecida pelo WebDriver para criar o efeito de passar o mouse sobre o elemento e, em seguida, recuperar a dica de ferramenta correspondente.

Um resumo da API de interaรงรตes avanรงadas com o usuรกrio

A API de Interaรงรตes Avanรงadas do Usuรกrio expรตe aรงรตes do usuรกrio como arrastar e soltar, passar o cursor sobre um elemento, seleรงรฃo mรบltipla, pressionar e soltar teclas e outras aรงรตes de teclado ou mouse em uma pรกgina da web.

Vocรช pode se referir a isso referรชncia oficial da classe Actions para obter mais detalhes sobre a API.

Antes de pularping Em termos de cenรกrios, vamos analisar as classes e os mรฉtodos necessรกrios para mover um elemento deslizante por um determinado deslocamento.

Passo 1) Para usar a API, importe os seguintes pacotes e classes:

API de interaรงรตes avanรงadas do usuรกrio

Passo 2) Crie um objeto da classe โ€œActionsโ€ e construa a sequรชncia de aรงรตes do usuรกrio. A classe Actions constrรณi aรงรตes encadeadas, como moveToElement() e dragAndDrop(). O objeto de controle รฉ passado como parรขmetro para o seu construtor.

API de interaรงรตes avanรงadas do usuรกrio

Passo 3) Crie um objeto Action usando o mรฉtodo build() da classe โ€œActionsโ€. Chame o mรฉtodo perform() para executar todas as aรงรตes enfileiradas no construtor.

API de interaรงรตes avanรงadas do usuรกrio

Jรก vimos como usar alguns dos mรฉtodos de aรงรฃo do usuรกrio fornecidos pela API: clickAndHold(element), moveByOffset(10, 0) e release(). A API expรตe muitos outros.

Implementaรงรฃo de dicas de ferramentas vs. Selenium Abordagem de verificaรงรฃo

Tipo de dica de ferramenta Como รฉ renderizado Selenium Abordagem
Atributo de tรญtulo HTML Texto armazenado no prรณprio elemento; o navegador exibe ao passar o cursor sobre ele. Leia com getAttribute("title") or getDomAttribute("title")Nรฃo รฉ necessรกrio passar o cursor sobre o objeto.
Plugin jQuery/JS Ao passar o mouse sobre o elemento, uma div dedicada รฉ exibida ao lado dele. Usar aรงรตes moveToElement(target).perform()Aguarde e, em seguida, leia o elemento da dica de ferramenta com getText().
dica de ferramenta somente em CSS Pseudo-elemento ou div irmรฃ alternada com :hover. Acione o evento de passar o cursor sobre ele com Aรงรตes e leia o texto renderizado ou o estilo calculado.

Como verificar (manipular) a dica de ferramenta em Selenium

Vamos analisar como acessar e verificar dicas de ferramentas em dois cenรกrios comuns:

  • Cenรกrio 1: A dica de ferramenta รฉ implementada usando o atributo โ€œtรญtuloโ€.
  • Cenรกrio 2: A dica de ferramenta รฉ implementada usando um plugin jQuery.

Cenรกrio 1: Atributo "tรญtulo" em HTML

Neste caso, utilizamos o site de exemplo. https://demo.guru99.com/test/social-icon.html e verifique a dica de ferramenta do รญcone โ€œgithubโ€ no canto superior direito da pรกgina.

Atributo HTML 'tรญtulo'

Primeiro localizamos o elemento, depois lemos seu atributo "tรญtulo" e o comparamos com o texto esperado da dica de ferramenta.

Como a dica de ferramenta estรก no atributo "tรญtulo", nem sequer automatizamos o evento de passar o mouse sobre ela; simplesmente recuperamos o valor do atributo com o mรฉtodo getAttribute().

Atributo HTML 'tรญtulo'

Aqui estรก o cรณdigo:

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.*;

public class ToolTip {
    public static void main(String[] args) {

        String baseUrl = "https://demo.guru99.com/test/social-icon.html";
        System.setProperty("webdriver.chrome.driver", "G:\\chromedriver.exe");
        WebDriver driver = new ChromeDriver();
        driver.get(baseUrl);
        String expectedTooltip = "Github";

        // Find the Github icon at the top right of the header
        WebElement github = driver.findElement(By.xpath(".//*[@class='soc-ico show-round']/a[4]"));

        // Read the "title" attribute value of the Github icon
        String actualTooltip = github.getAttribute("title");

        // Assert that the tooltip value matches the expected one
        System.out.println("Actual Title of Tool Tip " + actualTooltip);
        if (actualTooltip.equals(expectedTooltip)) {
            System.out.println("Test Case Passed");
        }
        driver.close();
    }
}

Explicaรงรฃo do cรณdigo:

  1. Encontre o WebElement que representa o รญcone โ€œgithubโ€.
  2. Leia o atributo โ€œtitleโ€ com o mรฉtodo getAttribute().
  3. Compare o valor com o texto da dica de ferramenta esperado.

Selenium 4 dica: Prefere getDomAttribute("title") para o atributo HTML literal, e deixe Selenium O gerenciador resolve o problema do driver em vez de codificรก-lo diretamente no cรณdigo. chromedriver.exe.

Cenรกrio 2: Plugin jQuery

Muitos plugins jQuery implementam dicas de ferramentas, e cada um renderiza de forma ligeiramente diferente.

Alguns plugins mantรชm o cรณdigo HTML da dica de ferramenta sempre ao lado do elemento que aciona o gatilho, enquanto outros criam uma tag "div" dinamicamente quando o cursor entra no gatilho.

Para esta demonstraรงรฃo, usaremos o estilo โ€œjQuery Tools Tooltipโ€.

Abra https://demo.guru99.com/test/tooltip.htmlAo passar o cursor sobre "Baixar agora", uma dica de ferramenta avanรงada รฉ exibida com uma imagem, um fundo de destaque, uma pequena tabela e um link clicรกvel.

Dica de ferramenta do plugin jQuery

Se vocรช inspecionar o cรณdigo-fonte, verรก que a div que representa a dica de ferramenta jรก estรก posicionada ao lado do link "Baixar agora". A tag de script abaixo controla quando ela aparece.

Fonte da dica de ferramenta do plugin jQuery

Agora vamos verificar o texto do link exibido na dica de ferramenta.

Primeiro, localize o WebElement correspondente a โ€œBaixar agoraโ€. Use a API de Interaรงรตes para navegar atรฉ o elemento (ao passar o mouse sobre ele). Em seguida, encontre o WebElement que corresponde ao link dentro da dica de ferramenta exibida e verifique se o texto estรก de acordo com o valor esperado.

Verificaรงรฃo de dicas de ferramentas do plugin jQuery

Aqui estรก o cรณdigo:

import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.*;

public class JqueryToolTip {
    public static void main(String[] args) {

        String baseUrl = "https://demo.guru99.com/test/tooltip.html";
        System.setProperty("webdriver.chrome.driver", "G:\\chromedriver.exe");

        WebDriver driver = new ChromeDriver();
        String expectedTooltip = "What's new in 3.2";
        driver.get(baseUrl);

        WebElement download = driver.findElement(By.xpath(".//*[@id='download_now']"));
        Actions builder = new Actions(driver);

        // Hover over the "Download now" link to reveal the tooltip
        builder.moveToElement(download).build().perform();

        WebElement toolTipElement = driver.findElement(By.xpath(".//*[@class='box']/div/a"));
        String actualTooltip = toolTipElement.getText();

        System.out.println("Actual Title of Tool Tip " + actualTooltip);
        if (actualTooltip.equals(expectedTooltip)) {
            System.out.println("Test Case Passed");
        }
        driver.close();
    }
}

Code Explicaรงรฃo:

  1. Localize o elemento da Web correspondente ao elemento โ€œBaixar agoraโ€ sobre o qual vocรช passarรก o cursor do mouse.
  2. Use a API de Interaรงรตes para posicionar o cursor sobre โ€œBaixar agoraโ€.
  3. Assim que a dica de ferramenta estiver visรญvel, localize o elemento da Web que representa o link dentro da dica de ferramenta (a tag โ€œaโ€).
  4. Leia o texto da dica de ferramenta com getText() e compare-o com o valor esperado armazenado em expectedTooltip.

Perguntas Frequentes

Se a dica de ferramenta for construรญda usando o atributo de tรญtulo HTML, chame getAttribute(โ€œtitleโ€) ou getDomAttribute(โ€œtitleโ€) no WebElement e compare o texto retornado com o valor esperado.

Use a classe Actions para moverToElement(target).perform(), espere atรฉ que o elemento da dica de ferramenta se torne visรญvel, depois leia seu texto ou atributo com getText() e verifique o valor.

Retorna nulo quando o elemento nรฃo possui o atributo `title` ou quando o texto da dica de ferramenta รฉ renderizado dinamicamente por meio de uma `div` separada. Inspecione o DOM e localize o contรชiner da dica de ferramenta.

Ferramentas com inteligรชncia artificial geram localizadores automaticamente, corrigem seletores automaticamente quando o DOM muda e sugerem sequรชncias de interaรงรฃo ao passar o mouse, reduzindo testes instรกveis โ€‹โ€‹de dicas de ferramentas e o tempo de manutenรงรฃo em diferentes navegadores.

Sim. Os assistentes de IA modernos escaneiam a pรกgina, detectam elementos interativos e geram cรณdigo pronto para uso. Selenium Scripts com asserรงรตes reduzem significativamente o esforรงo de programaรงรฃo manual para a cobertura de dicas de ferramentas.

Resuma esta postagem com: