Jak kliknąć obraz w Selenium Sterownik internetowy

⚡ Inteligentne podsumowanie

Kliknij na obrazek w Selenium WebDriver wymaga selektora CSS lub strategii XPath, ponieważ elementy obrazu nie ujawniają tekstu linku. W tym artykule wyjaśniono, jak zlokalizować obraz, wywołać akcję kliknięcia i sprawdzić, czy nawigacja działa poprawnie.

  • 🖱️. Główne działanie: Użyj driver.findElement(By.cssSelector(…)).click(), aby wykonać kliknięcie dowolnego elementu obrazu renderowanego wewnątrz kotwicy.
  • 🎯 Wybór lokalizatora: By.linkText i By.partialLinkText nie działają w przypadku obrazów, dlatego wymagane są By.cssSelector lub By.xpath.
  • 🧪 Krok weryfikacji: Potwierdź pomyślne kliknięcie, podając nowy tytuł strony za pomocą driver.getTitle() na podstawie oczekiwanego ciągu docelowego.
  • 🤖 Pomoc AI: Nowoczesne wtyczki AI sugerują stabilne selektory CSS i lokalizatory automatycznej naprawy, gdy znaczniki aplikacji lub wartości atrybutów ulegną zmianie.
  • 🛠️. Typowe pułapki: Ukryte, leniwie ładowane lub nakładające się obrazy często wymagają wyraźnego oczekiwania, przewijania w celu wyświetlenia lub JavaKliknij skrypt, aby zarejestrować się poprawnie.

Kliknij opcję Obraz w Selenium

Kliknięcie obrazu w Selenium WebDriver to typowe zadanie, gdy ikona, logo lub miniatura pełnią funkcję linku nawigacyjnego. Ponieważ obrazy nie zawierają widocznego tekstu, tradycyjne lokalizatory link-tekst zawodzą i wymagana jest bardziej niezawodna strategia selektora.

Dostęp do łączy do obrazów

Linki graficzne to elementy zakotwiczone na stronach internetowych w postaci obrazu, po kliknięciu których przeglądarka przechodzi do innego okna lub strony.

Ponieważ są to obrazy, nie możemy użyć metod By.linkText() i By.partialLinkText(), gdyż łącza do obrazów w ogóle nie zawierają tekstu łącza.

W takim przypadku powinniśmy skorzystać z By.cssSelector lub By.xpath. Pierwsza metoda jest zazwyczaj preferowana ze względu na swoją prostotę i czytelność.

W poniższym przykładzie uzyskamy dostęp do logo „Facebook” w lewej górnej części strony odzyskiwania hasła na Facebooku.

Dostęp do łączy do obrazów

Użyjemy By.cssSelector i atrybutu „title” elementu, aby uzyskać dostęp do linku do obrazka. Następnie sprawdzimy, czy przeglądarka została przekierowana na stronę główną Facebooka.

Java Code Przykład

Poniższy Selenium Fragment kodu WebDriver uruchamia przeglądarkę Chrome, otwiera stronę odzyskiwania hasła Facebooka, klika obraz logo Facebooka i wyświetla tytuł wyświetlonej strony.

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

Wynik

Kliknij opcję Obraz w Selenium Sterownik internetowy

Najlepsze praktyki dotyczące klikania obrazów

Kilka nawyków sprawia, że ​​automatyzacja kliknięć w obrazy staje się bardziej niezawodna w różnych przeglądarkach i na różnych rozmiarach ekranu.

  • Preferuj stabilne atrybuty, takie jak title, alt, aria-label lub data-*, zamiast głęboko zagnieżdżonych ścieżek CSS.
  • Dodaj jawny WebDriverWait dla ElementToBeClickable przed wykonaniem kliknięcia.
  • W przypadku obrazów ładowanych metodą „lazy-loaded” przewiń element do widoku za pomocą JavascriptNajpierw wykonawca.
  • Jeśli kliknięcie zostanie przechwycone przez przezroczystą nakładkę, wróć do JavaKliknij skrypt na element bazowy.
  • Sprawdź poprawność nawigacji za pomocą driver.getTitle() lub unikalnego elementu na stronie docelowej.

Jak AI ulepsza strategie lokalizowania obrazów

Narzędzia testowe wspomagane sztuczną inteligencją, takie jak Testim, Mabl i Healenium analizują DOM wokół obrazu i proponują samonaprawiające się lokalizatory. Gdy nazwa klasy lub atrybut zmieni się po wydaniu, framework automatycznie zamienia się na najstabilniejszą alternatywę, co zmniejsza ryzyko wystąpienia błędów w nawigacji opartej na ikonach.

Inżynierowie mogą również używać ChatGPT lub GitHub Copilot do generowania fragmentów kodu WebDriver, sugerowania solidnych wyrażeń CSS lub XPath dla obrazu oraz tworzenia wersji roboczych asercji dla strony ładowanej po kliknięciu. Wygenerowany kod nadal powinien zostać sprawdzony pod kątem poprawności oraz obsługi waitów i nakładek.

Wniosek

Kliknięcie linków do obrazów w Selenium WebDriver jest prosty w obsłudze po wybraniu stabilnego lokalizatora. By.cssSelector z atrybutem title lub alt to najbardziej czytelne podejście, By.xpath to rozwiązanie awaryjne, gdy znaczniki są niezręczne, a jawne oczekiwania sprawiają, że skrypt działa niezawodnie w różnych uruchomieniach.

FAQ

Znajdź obraz za pomocą By.cssSelector lub By.xpath, używając stabilnego atrybutu, takiego jak title, alt lub aria-label, a następnie wywołaj .click() na zwróconym elemencie WebElement. Zweryfikuj wynik za pomocą driver.getTitle() lub unikalnego elementu na stronie docelowej.

Tak. Narzędzia takie jak Testim, Mabl i ChatGPT sprawdzają otaczający DOM i sugerują stabilny selektor na podstawie atrybutów title, alt, aria-label lub data. Inżynierowie powinni nadal sprawdzać wygenerowany lokalizator pod kątem unikalności i odporności.

Samonaprawiający się lokalizator to funkcja sztucznej inteligencji, która podmienia selektor alternatywny, gdy oryginalny zawiedzie. Platformy takie jak Healenium i Mabl obserwują zmiany atrybutów wokół obrazu i wybierają najstabilniejszy zamiennik, co zmniejsza ryzyko niestabilnych testów po odświeżeniu interfejsu użytkownika.

Oba lokalizatory pasują do widocznego tekstu wewnątrz kotwicy. Link do obrazu otacza znacznik img i nie ujawnia węzła tekstowego, więc dopasowanie zawsze nic nie zwraca. Zamiast tego użyj By.cssSelector lub By.xpath z atrybutem title, alt lub aria-label.

Jeśli nakładka, okno modalne lub etykieta narzędzia blokuje obraz, przewiń go do widoku za pomocą JavascriptExecutor i dodaj WebDriverWait dla ElementToBeClickable. W ramach rozwiązania awaryjnego wykonaj JavaKliknij skrypt na WebElement, aby ominąć nakładanieping warstwa.

Potwierdź nowy tytuł strony za pomocą driver.getTitle(), bieżącego URL z driver.getCurrentUrl() lub obecnością unikalnego elementu na stronie docelowej. Połączenie tych kontroli daje testowi pewność, że kliknięcie rzeczywiście uruchomiło nawigację.

Podsumuj ten post następująco: