Sådan klikker du på billedet Selenium Webdriver

⚡ Smart opsummering

Klik på billedet i Selenium WebDriver kræver CSS-selektor eller XPath-strategier, fordi billedelementer ikke viser linktekst. Denne artikel forklarer, hvordan man finder billedet, udløser klikhandlingen og verificerer, at navigationen lykkes.

  • 🖱️ Kernehandling: Brug driver.findElement(By.cssSelector(…)).click() til at udføre et klik på et hvilket som helst billedelement, der gengives inde i et anker.
  • 🎯 Valg af lokator: By.linkText og By.partialLinkText fungerer ikke for billeder, så By.cssSelector eller By.xpath er påkrævet.
  • 🧪 Bekræftelsestrin: Bekræft et vellykket klik ved at angive den nye sidetitel med driver.getTitle() mod den forventede destinationsstreng.
  • 🤖 AI Assistance: Moderne AI-plugins foreslår stabile CSS-selektorer og automatiske reparationslokaliseringer, når applikationens markup eller attributværdier ændres.
  • 🛠️ Almindelige faldgruber: Skjulte, langsomt indlæste eller overlappende billeder kræver ofte eksplicitte ventetider, rulning ind i visning eller JavaKlik på scriptet for at registrere korrekt.

Klik på billede ind Selenium

Klik på et billede i Selenium WebDriver er en almindelig opgave, når et ikon, logo eller miniaturebillede fungerer som et navigationslink. Da billeder ikke indeholder synlig tekst, fejler traditionelle link-tekst-lokaliseringsværktøjer, og en mere pålidelig selektorstrategi er nødvendig.

Adgang til billedlinks

Billedlinks er ankre på websider repræsenteret af et billede, som, når der klikkes på det, navigerer browseren til et andet vindue eller en anden side.

Da de er billeder, kan vi ikke bruge metoderne By.linkText() og By.partialLinkText(), fordi billedlinks slet ikke har nogen linktekst.

I dette tilfælde bør vi ty til enten By.cssSelector eller By.xpath. Den første metode foretrækkes generelt på grund af dens enkelhed og læsbarhed.

I eksemplet nedenfor får vi adgang til "Facebook"-logoet øverst til venstre på Facebooks side for gendannelse af adgangskode.

Adgang til billedlinks

Vi bruger By.cssSelector og elementets "title"-attribut til at få adgang til billedlinket. Vi bekræfter derefter, at browseren er blevet ført til Facebooks hjemmeside.

Java Code Eksempel

Følgende Selenium WebDriver-kodestykket starter Chrome, åbner Facebooks side til gendannelse af adgangskode, klikker på Facebook-logoet og aktiverer den resulterende sidetitel.

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

Klik på billede ind Selenium Webdriver

De bedste fremgangsmåder til at klikke på billeder

Et par vaner gør automatisering af billedklik mere pålidelig på tværs af browsere og skærmstørrelser.

  • Foretræk en stabil attribut såsom title, alt, aria-label eller data-* frem for dybt indlejrede CSS-stier.
  • Tilføj en eksplicit WebDriverWait for ElementToBeClickable, før du udfører klikket.
  • For lazy-loaded billeder, rul elementet ind i syne med JavascriptEksekutor først.
  • Hvis et gennemsigtigt overlay opfanger klikket, skal du gå tilbage til en JavaScriptklik på det underliggende element.
  • Valider navigation med driver.getTitle() eller et unikt element på destinationssiden.

Hvordan AI forbedrer billedlokaliseringsstrategier

AI-assisterede testværktøjer som f.eks. Testim, Mabl og Healenium analyserer DOM'en omkring et billede og foreslår selvreparerende locators. Når et klassenavn eller en attribut ændres efter en udgivelse, skifter frameworket automatisk til det mest stabile alternativ, hvilket reducerer ustabile fejl ved ikonbaseret navigation.

Ingeniører kan også bruge ChatGPT eller GitHub Copilot til at generere WebDriver-snippets, foreslå robuste CSS- eller XPath-udtryk til et billede og udarbejde assertions til den side, der indlæses efter klikket. Genereret kode bør stadig gennemgås for korrekthed og håndtering af ventetider og overlays.

Konklusion

Klik på billedlinks i Selenium WebDriver er ligetil, når du har valgt en stabil locator. By.cssSelector med title- eller alt-attributten er den mest læsbare tilgang, By.xpath er fallback, når markup'en er akavet, og eksplicitte ventetider gør scriptet pålideligt på tværs af kørsel.

Ofte Stillede Spørgsmål

Find billedet med By.cssSelector eller By.xpath ved hjælp af en stabil attribut såsom title, alt eller aria-label, og kald derefter .click() på det returnerede WebElement. Bekræft resultatet med driver.getTitle() eller et unikt element på destinationssiden.

Ja. Værktøjer som f.eks. Testim, Mabl og ChatGPT inspicerer den omgivende DOM og foreslår en stabil selector baseret på titel, alt, aria-label eller dataattributter. Ingeniører bør stadig gennemgå den genererede locator for unikhed og robusthed.

En selvreparerende locator er en AI-funktion, der udskifter en alternativ vælger, når originalen fejler. Frameworks som Healenium og Mabl observerer attributændringer omkring et billede og vælger den mest stabile erstatning, hvilket reducerer ustabile tests efter opdateringer af brugergrænsefladen.

Begge locatorer matcher på den synlige tekst i et anker. Et billedlink ombryder et img-tag og eksponerer ingen tekstnode, så matchet returnerer altid ingenting. Brug i stedet By.cssSelector eller By.xpath med title, alt eller aria-label.

Hvis et overlay, en modal eller et værktøjstip blokerer billedet, skal du rulle det ind i syne med JavascriptUdfør og tilføj en WebDriverWait for ElementToBeClickable. Som et alternativ, udfør en JavaKlik med scriptet på WebElementet for at omgå overlapningenping lag.

Angiv den nye sidetitel med driver.getTitle(), den nuværende URL med driver.getCurrentUrl(), eller tilstedeværelsen af ​​et unikt element på destinationssiden. En kombination af disse kontroller giver testen sikkerhed for, at klikket virkelig udløste navigationen.

Opsummer dette indlæg med: