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.

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.
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
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.

.png)
.png)