Hur man klickar på bild i Selenium Webdriver

⚡ Smart sammanfattning

Klicka på bilden i Selenium WebDriver kräver CSS-selektor eller XPath-strategier eftersom bildelement inte exponerar länktext. Den här artikeln förklarar hur man hittar bilden, utlöser klickåtgärden och verifierar att navigeringen lyckas.

  • 🖱️ Kärnåtgärd: Använd driver.findElement(By.cssSelector(…)).click() för att klicka på valfritt bildelement som renderas inuti ett ankare.
  • 🎯 Val av lokaliseringsenhet: By.linkText och By.partialLinkText fungerar inte för bilder, så By.cssSelector eller By.xpath krävs.
  • 🧪 Verifieringssteg: Bekräfta ett lyckat klick genom att ange den nya sidtiteln med driver.getTitle() mot den förväntade destinationssträngen.
  • 🤖 AI-hjälp: Moderna AI-plugins föreslår stabila CSS-väljare och automatiska läkningssökare när applikationens markup eller attributvärden ändras.
  • 🛠️ Vanliga fallgropar: Dolda, lata eller överlappande bilder kräver ofta explicita väntetider, scroll-in-view eller JavaKlicka på skriptet för att registrera dig korrekt.

Klicka på Bild in Selenium

Att klicka på en bild i Selenium WebDriver är en vanlig uppgift när en ikon, logotyp eller miniatyrbild fungerar som en navigeringslänk. Eftersom bilder inte har någon synlig text misslyckas traditionella länktextsökare och en mer pålitlig väljarstrategi krävs.

Åtkomst till bildlänkar

Bildlänkar är ankare på webbsidor som representeras av en bild som, när man klickar på den, navigerar webbläsaren till ett annat fönster eller en annan sida.

Eftersom de är bilder kan vi inte använda metoderna By.linkText() och By.partialLinkText() eftersom bildlänkar inte har någon länktext alls.

I det här fallet bör vi använda antingen By.cssSelector eller By.xpath. Den första metoden är generellt att föredra på grund av dess enkelhet och läsbarhet.

I exemplet nedan kommer vi åt "Facebook"-logotypen i den övre vänstra delen av Facebooks lösenordsåterställningssida.

Åtkomst till bildlänkar

Vi kommer att använda By.cssSelector och elementets attribut ”title” för att komma åt bildlänken. Vi kommer sedan att verifiera att webbläsaren har tagits till Facebooks startsida.

Java Code Exempelvis

Följande Selenium WebDriver-kodavsnittet startar Chrome, öppnar sidan för återställning av Facebooks lösenord, klickar på Facebook-logotypen och bekräftar den resulterande sidtiteln.

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

Resultat

Klicka på Bild in Selenium Webdriver

Bästa praxis för att klicka på bilder

Några vanor gör bildklickautomatisering mer tillförlitlig i alla webbläsare och skärmstorlekar.

  • Föredra ett stabilt attribut som titel, alt, aria-label eller data-* framför djupt kapslade CSS-sökvägar.
  • Lägg till en explicit WebDriverWait for ElementToBeClickable innan du utfärdar klicket.
  • För bilder som laddas långsamt, skrolla elementet till vy med JavascriptExekutor först.
  • Om ett transparent överlägg avlyssnar klicket, återgå till en JavaSkriptklick på det underliggande elementet.
  • Validera navigeringen med driver.getTitle() eller ett unikt element på destinationssidan.

Hur AI förbättrar bildlokaliseringsstrategier

AI-assisterade testverktyg som till exempel Testim, Mabl och Healenium analyserar DOM:en runt en bild och föreslår självläkande positionerare. När ett klassnamn eller attribut ändras efter en utgåva byter ramverket automatiskt till det mest stabila alternativet, vilket minskar risken för ojämna fel vid ikonbaserad navigering.

Ingenjörer kan också använda ChatGPT eller GitHub Copilot för att generera WebDriver-kodavsnitt, föreslå robusta CSS- eller XPath-uttryck för en bild och utarbeta påståenden för sidan som laddas efter klicket. Genererad kod bör fortfarande granskas för korrekthet och för hantering av väntetider och överlagringar.

Slutsats

Klicka på bildlänkar i Selenium WebDriver är enkelt att använda när du väl valt en stabil locator. By.cssSelector med attributet title eller alt är den mest läsbara metoden, By.xpath är reservmetoden när markupen är obekväm, och explicita väntetider gör skriptet tillförlitligt över körningar.

Vanliga frågor

Leta reda på bilden med By.cssSelector eller By.xpath med ett stabilt attribut som title, alt eller aria-label, och anropa sedan .click() på det returnerade WebElementet. Verifiera resultatet med driver.getTitle() eller ett unikt element på målsidan.

Ja. Verktyg som till exempel Testim, Mabl och ChatGPT inspekterar den omgivande DOM:en och föreslår en stabil väljare baserat på titel, alt, aria-label eller dataattribut. Ingenjörer bör fortfarande granska den genererade locatorn för unikhet och motståndskraft.

En självläkande lokaliseringsfunktion är en AI-funktion som byter ut en alternativ väljare när originalet misslyckas. Ramverk som Healenium och Mabl observerar attributförändringar runt en bild och väljer den mest stabila ersättningen, vilket minskar ojämna tester efter att användargränssnittet har uppdaterats.

Båda positionerna matchar den synliga texten inuti ett ankare. En bildlänk omsluter en img-tagg och exponerar ingen textnod, så matchningen returnerar alltid ingenting. Använd By.cssSelector eller By.xpath med title, alt eller aria-label istället.

Om ett överlägg, en modal eller en verktygstips blockerar bilden, rulla den till vy med JavascriptExecutor och lägg till en WebDriverWait for ElementToBeClickable. Som en reserv, kör en JavaSkriptklicka på WebElement för att kringgå överlappningenping lager.

Ange den nya sidtiteln med driver.getTitle(), den aktuella URL med driver.getCurrentUrl(), eller förekomsten av ett unikt element på destinationssidan. En kombination av dessa kontroller ger testet säkerhet om att klicket verkligen utlöste navigering.

Sammanfatta detta inlägg med: