Як натиснути зображення в Selenium Веб-драйвер
⚡ Розумний підсумок
Натисніть на зображення в Selenium WebDriver вимагає стратегій CSS-селектора або XPath, оскільки елементи зображення не відображають текст посилання. У цій статті пояснюється, як знайти зображення, ініціювати дію кліку та перевірити успішність навігації.

Клацання на зображенні в Selenium WebDriver – це поширене завдання, коли значок, логотип або мініатюра поводиться як навігаційне посилання. Оскільки зображення не містять видимого тексту, традиційні локатори посилань і тексту не працюють, і потрібна надійніша стратегія селектора.
Доступ до посилань на зображення
Посилання на зображення – це якорі на веб-сторінках, представлені зображенням, яке при натисканні перенаправляє браузер до іншого вікна або сторінки.
Оскільки посилання на зображення є зображеннями, ми не можемо використовувати методи By.linkText() та By.partialLinkText(), оскільки вони взагалі не мають тексту посилання.
У цьому випадку нам слід вдатися до використання By.cssSelector або By.xpath. Перший метод зазвичай є кращим через його простоту та читабельність.
У прикладі нижче ми отримаємо доступ до логотипу «Facebook» у верхній лівій частині сторінки відновлення пароля Facebook.
Ми використовуватимемо By.cssSelector та атрибут елемента «title» для доступу до посилання на зображення. Потім ми перевіримо, чи браузер перенаправлено на головну сторінку Facebook.
Java Code Приклад
Наступні Selenium Фрагмент WebDriver запускає Chrome, відкриває сторінку відновлення пароля Facebook, натискає на зображення логотипу Facebook і підтверджує заголовок отриманої сторінки.
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();
}
}
Результат
Найкращі практики для кліків на зображеннях
Кілька звичок роблять автоматизацію кліків на зображення надійнішою в різних браузерах та розмірах екранів.
- Надавайте перевагу стабільному атрибуту, такому як title, alt, aria-label або data-*, над глибоко вкладеними CSS-шляхами.
- Додайте явний WebDriverWait для ElementToBeClickable перед виконанням кліку.
- Для зображень, завантажених методом лінивого прокручування, прокрутіть елемент у поле зору за допомогою JavascriptВиконавець, перш за все.
- Якщо прозоре накладання перехоплює клік, поверніться до JavaКлік скрипта на базовому елементі.
- Перевірте навігацію за допомогою driver.getTitle() або унікального елемента на цільовій сторінці.
Як ШІ покращує стратегії пошуку зображень
Інструменти тестування за допомогою штучного інтелекту, такі як Testim, Mabl та Healenium аналізують DOM навколо зображення та пропонують локатори з функцією самовідновлення. Коли назва класу або атрибут змінюється після релізу, фреймворк автоматично замінює його на найстабільніший варіант, що зменшує нестабільні збої під час навігації на основі значків.
Інженери також можуть використовувати ChatGPT або GitHub Copilot для генерації фрагментів WebDriver, пропонування надійних виразів CSS або XPath для зображення та створення чернеток тверджень для сторінки, яка завантажується після кліку. Згенерований код все одно слід перевірити на правильність та обробку очікувань і накладень.
Висновок
Клацання посилань на зображення в Selenium WebDriver стає простим у використанні, якщо вибрати стабільний локатор. By.cssSelector з атрибутом title або alt — це найчитабельніший підхід, By.xpath — резервний варіант, коли розмітка незручна, а явні очікування роблять скрипт надійним під час запуску.

.png)
.png)