Comment cliquer sur une image dans Selenium Pilote Web

โšก Rรฉsumรฉ intelligent

Cliquez sur l'image dans Selenium WebDriver nรฉcessite l'utilisation de sรฉlecteurs CSS ou de stratรฉgies XPath, car les รฉlรฉments image ne contiennent pas de texte pour les liens. Cet article explique comment localiser l'image, dรฉclencher l'action de clic et vรฉrifier que la navigation rรฉussit.

  • ๐Ÿ‡ง๐Ÿ‡ท Action principale : Utilisez driver.findElement(By.cssSelector(โ€ฆ)).click() pour effectuer un clic sur n'importe quel รฉlรฉment image rendu ร  l'intรฉrieur d'une ancre.
  • (I.e. Choix du localisateur : Les mรฉthodes By.linkText et By.partialLinkText ne fonctionnent pas pour les images ; il est donc nรฉcessaire dโ€™utiliser By.cssSelector ou By.xpath.
  • ๐Ÿงช ร‰tape de vรฉrification : Confirmez la rรฉussite du clic en vรฉrifiant le nouveau titre de la page avec driver.getTitle() par rapport ร  la chaรฎne de destination attendue.
  • ๐Ÿค– Assistance IA : Les plugins d'IA modernes suggรจrent des sรฉlecteurs CSS stables et des localisateurs ร  rรฉparation automatique lorsque le balisage de l'application ou les valeurs des attributs changent.
  • ๏ธ Piรจges courants : Les images masquรฉes, chargรฉes ร  la demande ou superposรฉes nรฉcessitent souvent des attentes explicites, un dรฉfilement pour les afficher, ou JavaScript : cliquez pour vous enregistrer correctement.

Cliquez sur l'image dans Selenium

Cliquer sur une image dans Selenium L'utilisation de WebDriver est courante lorsqu'une icรดne, un logo ou une miniature sert de lien de navigation. Comme les images ne contiennent aucun texte visible, les localisateurs de texte de lien traditionnels sont inefficaces et une stratรฉgie de sรฉlection plus fiable est nรฉcessaire.

Accรฉder aux liens d'images

Les liens images sont des ancres sur les pages web reprรฉsentรฉes par une image qui, lorsqu'on clique dessus, fait naviguer le navigateur vers une autre fenรชtre ou page.

Comme il s'agit d'images, nous ne pouvons pas utiliser les mรฉthodes By.linkText() et By.partialLinkText() car les liens d'images ne contiennent aucun texte.

Dans ce cas, il convient d'utiliser soit By.cssSelector, soit By.xpath. La premiรจre mรฉthode est gรฉnรฉralement privilรฉgiรฉe pour sa simplicitรฉ et sa lisibilitรฉ.

Dans l'exemple ci-dessous, nous accรฉderons au logo ยซ Facebook ยป dans la partie supรฉrieure gauche de la page de rรฉcupรฉration de mot de passe de Facebook.

Accรฉder aux liens d'images

Nous utiliserons By.cssSelector et l'attribut ยซ title ยป de l'รฉlรฉment pour accรฉder au lien de l'image. Nous vรฉrifierons ensuite que le navigateur a bien รฉtรฉ redirigรฉ vers la page d'accueil de Facebook.

Java Code Exemple

Selenium L'extrait de code WebDriver lance Chrome, ouvre la page de rรฉcupรฉration du mot de passe Facebook, clique sur l'image du logo Facebook et affiche le titre de la page rรฉsultante.

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();
    }
}

Rรฉsultat

Cliquez sur l'image dans Selenium Pilote Web

Meilleures pratiques pour cliquer sur les images

Quelques habitudes permettent de rendre l'automatisation des clics sur les images plus fiable sur tous les navigateurs et toutes les tailles d'รฉcran.

  • Privilรฉgiez un attribut stable tel que title, alt, aria-label ou data-* plutรดt que des chemins CSS profondรฉment imbriquรฉs.
  • Ajoutez un WebDriverWait explicite pour ElementToBeClickable avant de dรฉclencher le clic.
  • Pour les images chargรฉes de maniรจre diffรฉrรฉe, faites dรฉfiler l'รฉlรฉment jusqu'ร  ce qu'il soit visible avec JavascriptL'exรฉcuteur testamentaire en premier.
  • Si une superposition transparente intercepte le clic, utilisez une mรฉthode alternative. JavaScript : cliquez sur lโ€™รฉlรฉment sous-jacent.
  • Validez la navigation avec driver.getTitle() ou un รฉlรฉment unique sur la page de destination.

Comment l'IA amรฉliore les stratรฉgies de localisation d'images

Les outils de test assistรฉs par l'IA tels que TestimMabl et Healenium analysent le DOM autour d'une image et proposent des localisateurs auto-rรฉparateurs. Lorsqu'un nom de classe ou un attribut change aprรจs une mise ร  jour, le framework le remplace automatiquement par l'alternative la plus stable, ce qui rรฉduit les dysfonctionnements liรฉs ร  la navigation par icรดnes.

Les ingรฉnieurs peuvent รฉgalement utiliser ChatGPT ou GitHub Copilot pour gรฉnรฉrer des extraits de code WebDriver, suggรฉrer des expressions CSS ou XPath robustes pour une image et rรฉdiger des assertions pour la page qui se charge aprรจs le clic. Le code gรฉnรฉrรฉ doit nรฉanmoins รชtre vรฉrifiรฉ afin de s'assurer de sa correction et de sa gestion des temps d'attente et des superpositions.

Conclusion

Cliquer sur les liens d'images dans Selenium WebDriver est simple d'utilisation une fois qu'un localisateur stable a รฉtรฉ choisi. L'utilisation de `By.cssSelector` avec l'attribut `title` ou `alt` est la mรฉthode la plus lisible ; `By.xpath` est la solution de repli lorsque le balisage est complexe, et les attentes explicites garantissent la fiabilitรฉ du script lors de ses exรฉcutions successives.

FAQ

Localisez l'image ร  l'aide de By.cssSelector ou By.xpath en utilisant un attribut stable tel que title, alt ou aria-label, puis appelez .click() sur l'รฉlรฉment WebElement obtenu. Vรฉrifiez le rรฉsultat avec driver.getTitle() ou un รฉlรฉment unique sur la page de destination.

Oui. Des outils tels que TestimMabl et ChatGPT analysent le DOM environnant et proposent un sรฉlecteur stable basรฉ sur les attributs title, alt, aria-label ou data. Les ingรฉnieurs doivent nรฉanmoins vรฉrifier l'unicitรฉ et la robustesse du sรฉlecteur gรฉnรฉrรฉ.

Un localisateur auto-rรฉparateur est une fonctionnalitรฉ d'IA qui remplace le sรฉlecteur d'origine par un autre lorsque celui-ci รฉchoue. Des frameworks comme Healenium et Mabl analysent les modifications d'attributs autour d'une image et choisissent le remplacement le plus stable, ce qui rรฉduit les tests instables aprรจs les actualisations de l'interface utilisateur.

Ces deux mรฉthodes de recherche s'appliquent au texte visible ร  l'intรฉrieur d'une ancre. Un lien image contient une balise <img> et ne prรฉsente aucun รฉlรฉment de texte ; la recherche ne renvoie donc jamais de rรฉsultat. Utilisez plutรดt By.cssSelector ou By.xpath avec les attributs title, alt ou aria-label.

Si une superposition, une fenรชtre modale ou une infobulle bloque l'image, faites-la dรฉfiler pour la rendre visible avec JavascriptExรฉcutez un exรฉcuteur et ajoutez un WebDriverWait pour ElementToBeClickable. En cas de repli, exรฉcutez un JavaScript : cliquez sur lโ€™รฉlรฉment Web pour contourner le chevauchementping couche.

Vรฉrifiez le nouveau titre de la page avec driver.getTitle(), le titre actuel URL avec driver.getCurrentUrl(), ou la prรฉsence d'un รฉlรฉment unique sur la page de destination. La combinaison de ces vรฉrifications permet au test de s'assurer que le clic a bien dรฉclenchรฉ la navigation.

Rรฉsumez cet article avec :