Як натиснути зображення в Selenium Веб-драйвер

⚡ Розумний підсумок

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

  • 🖱️ Основна дія: Використовуйте driver.findElement(By.cssSelector(…)).click() для виконання кліку на будь-якому елементі зображення, що відображається всередині якоря.
  • 🎯 Вибір локатора: By.linkText та By.partialLinkText не працюють для зображень, тому потрібні By.cssSelector або By.xpath.
  • 🧪 Крок перевірки: Підтвердіть успішний клік, встановивши новий заголовок сторінки за допомогою driver.getTitle() у відповідному рядку призначення.
  • 🤖 Допомога AI: Сучасні плагіни штучного інтелекту пропонують стабільні селектори CSS та локатори з функцією автоматичного відновлення, коли змінюється розмітка програми або значення атрибутів.
  • 🛠️ Поширені підводні камені: Приховані, ліниво завантажені або перекриваючі зображення часто вимагають явного очікування, прокручування у вікно перегляду або JavaНатисніть на скрипт, щоб правильно зареєструватися.

Натисніть «Зображення в». Selenium

Клацання на зображенні в 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();
    }
}

Результат

Натисніть «Зображення в». Selenium Веб-драйвер

Найкращі практики для кліків на зображеннях

Кілька звичок роблять автоматизацію кліків на зображення надійнішою в різних браузерах та розмірах екранів.

  • Надавайте перевагу стабільному атрибуту, такому як 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 — резервний варіант, коли розмітка незручна, а явні очікування роблять скрипт надійним під час запуску.

Поширені запитання

Знайдіть зображення за допомогою By.cssSelector або By.xpath, використовуючи стабільний атрибут, такий як title, alt або aria-label, а потім викличте .click() для повернутого WebElement. Перевірте результат за допомогою driver.getTitle() або унікального елемента на цільовій сторінці.

Так. Такі інструменти, як Testim, Mabl та ChatGPT перевіряють навколишній DOM та пропонують стабільний селектор на основі атрибутів title, alt, aria-label або data. Інженери все одно повинні перевірити згенерований локатор на унікальність та стійкість.

Самовідновлювальний локатор — це функція штучного інтелекту, яка замінює альтернативний селектор, коли оригінальний виходить з ладу. Такі фреймворки, як Healenium та Mabl, спостерігають за змінами атрибутів навколо зображення та вибирають найстабільнішу заміну, що зменшує нестабільні тести після оновлення інтерфейсу користувача.

Обидва локатори збігаються на видимому тексті всередині якоря. Посилання на зображення обгортає тег img і не відкриває текстовий вузол, тому збіг завжди нічого не повертає. Використовуйте замість цього By.cssSelector або By.xpath з title, alt або aria-label.

Якщо зображення блокує накладання, модальне вікно або підказка, прокрутіть його, щоб воно з'явилося в полі зору за допомогою JavascriptВиконавець та додайте WebDriverWait для ElementToBeClickable. Як резервний варіант, виконайте JavaКлік скрипта на WebElement для обходу перекриттяping шар

Підтвердіть новий заголовок сторінки за допомогою driver.getTitle(), поточний URL за допомогою driver.getCurrentUrl() або наявності унікального елемента на цільовій сторінці. Поєднання цих перевірок дає тесту впевненість у тому, що клік дійсно ініціював навігацію.

Підсумуйте цей пост за допомогою: