Jak kliknout na obrázek v Selenium Webdriver

⚡ Chytré shrnutí

Klikněte na obrázek v Selenium WebDriver vyžaduje strategie CSS selektoru nebo XPath, protože obrazové elementy nezobrazují text odkazu. Tento článek vysvětluje, jak najít obrázek, spustit akci kliknutí a ověřit, zda navigace proběhla úspěšně.

  • 🖱️ Hlavní akce: Pomocí driver.findElement(By.cssSelector(…)).click() provedete kliknutí na libovolný element obrázku vykreslený uvnitř kotvy.
  • 🎯 Volba lokátoru: By.linkText a By.partialLinkText nefungují pro obrázky, takže je vyžadován By.cssSelector nebo By.xpath.
  • 🧪 Krok ověření: Úspěšné kliknutí potvrďte prosazením nového názvu stránky pomocí driver.getTitle() oproti očekávanému cílovému řetězci.
  • 🤖 Asistence AI: Moderní pluginy pro umělou inteligenci navrhují stabilní CSS selektory a automatické opravy lokátorů při změně značek aplikace nebo hodnot atributů.
  • 🛠️ Častá úskalí: Skryté, líně načítané nebo překrývající se obrázky často vyžadují explicitní čekání, posouvání do zobrazení nebo JavaKliknutím na skript provedete správnou registraci.

Klikněte na Obrázek v Selenium

Kliknutím na obrázek v Selenium WebDriver je běžný úkol, který se používá, když ikona, logo nebo miniatura slouží jako navigační odkaz. Protože obrázky neobsahují žádný viditelný text, tradiční lokátory odkazů a textů selhávají a je vyžadována spolehlivější strategie selektorů.

Přístup k odkazům na obrázky

Obrázky jsou kotvy na webových stránkách reprezentované obrázkem, které po kliknutí přesměrují prohlížeč do jiného okna nebo na jinou stránku.

Protože se jedná o obrázky, nemůžeme použít metody By.linkText() a By.partialLinkText(), protože odkazy na obrázky nemají žádný text odkazu.

V tomto případě bychom se měli uchýlit k použití buď By.cssSelector, nebo By.xpath. První metoda je obecně preferována kvůli své jednoduchosti a čitelnosti.

V níže uvedeném příkladu přistoupíme k logu „Facebook“ v levé horní části stránky obnovení hesla Facebooku.

Přístup k odkazům na obrázky

Pro přístup k odkazu na obrázek použijeme By.cssSelector a atribut „title“ elementu. Poté ověříme, zda byl prohlížeč přesměrován na domovskou stránku Facebooku.

Java Code Příklad

Následující Selenium Úryvek kódu WebDriver spustí Chrome, otevře stránku pro obnovení hesla Facebooku, klikne na obrázek loga Facebooku a zobrazí výsledný název stránky.

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

Výsledek

Klikněte na Obrázek v Selenium Webdriver

Nejlepší postupy pro klikání na obrázky

Několik návyků zvyšuje spolehlivost automatizace klikání na obrázky v různých prohlížečích a velikostech obrazovek.

  • Upřednostněte stabilní atribut, jako je title, alt, aria-label nebo data-*, před hluboce vnořenými cestami CSS.
  • Před vydáním kliknutí přidejte explicitní WebDriverWait pro ElementToBeClickable.
  • U obrázků načítaných metodou líně posuňte prvek do zobrazení pomocí JavascriptVykonavatel nejprve.
  • Pokud průhledná vrstva zablokuje kliknutí, vraťte se k JavaKliknutí skriptu na podkladový prvek.
  • Ověřte navigaci pomocí driver.getTitle() nebo unikátního elementu na cílové stránce.

Jak umělá inteligence vylepšuje strategie vyhledávání obrázků

Nástroje pro testování s podporou umělé inteligence, jako například Testim, Mabl a Healenium analyzují DOM kolem obrázku a navrhují samoopravitelné lokátory. Když se po vydání změní název třídy nebo atribut, framework automaticky přepne na nejstabilnější alternativu, což snižuje nespolehlivá selhání při navigaci založené na ikonách.

Inženýři mohou také použít ChatGPT nebo GitHub Copilot ke generování úryvků WebDriveru, navrhování robustních výrazů CSS nebo XPath pro obrázek a k navrhování assercí pro stránku, která se načte po kliknutí. Vygenerovaný kód by měl být i nadále zkontrolován z hlediska správnosti a zpracování čekání a překrytí.

Závěr

Kliknutím na odkazy na obrázky v Selenium WebDriver je jednoduchý, jakmile si vyberete stabilní lokátor. By.cssSelector s atributem title nebo alt je nejčitelnější přístup, By.xpath je záložní řešení, když je kódování nepraktické, a explicitní čekání zajistí spolehlivost skriptu napříč běhy.

Nejčastější dotazy

Vyhledejte obrázek pomocí By.cssSelector nebo By.xpath s použitím stabilního atributu, jako je title, alt nebo aria-label, a poté zavolejte .click() pro vrácený WebElement. Výsledek ověřte pomocí driver.getTitle() nebo jedinečného prvku na cílové stránce.

Ano. Nástroje jako například Testim, Mabl a ChatGPT prověřují okolní DOM a navrhují stabilní selektor na základě atributů title, alt, aria-label nebo data. Inženýři by i tak měli zkontrolovat vygenerovaný lokátor z hlediska jedinečnosti a odolnosti.

Samoopravný lokátor je funkce umělé inteligence, která v případě selhání původního selektoru nahradí alternativní selektor. Frameworky jako Healenium a Mabl sledují změny atributů kolem obrázku a vybírají nejstabilnější náhradu, což snižuje počet nespolehlivých testů po aktualizaci uživatelského rozhraní.

Oba lokátory se shodují s viditelným textem uvnitř kotvy. Odkaz na obrázek obaluje tag img a nezobrazuje žádný textový uzel, takže shoda nikdy nic nevrací. Použijte místo toho By.cssSelector nebo By.xpath s title, alt nebo aria-label.

Pokud obrázek blokuje překryvné okno, modální okno nebo popisek, posuňte jej do zobrazení pomocí JavascriptSpouštěč a přidejte WebDriverWait pro ElementToBeClickable. Jako záložní řešení spusťte JavaKliknutím skriptu na WebElement se obejde překrýváníping vrstva.

Prohlaste nový název stránky pomocí driver.getTitle(), aktuální URL pomocí driver.getCurrentUrl() nebo přítomností unikátního elementu na cílové stránce. Kombinace těchto kontrol dává testu jistotu, že kliknutí skutečně spustilo navigaci.

Shrňte tento příspěvek takto: