Як перевірити підказку в Selenium

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

Перевірити підказку в Selenium WebDriver охоплює два надійні шаблони для встановлення тексту підказки: безпосереднє зчитування атрибута title HTML та використання API дій для наведення курсора на елементи, що відображають динамічні елементи. JavaПідказки скриптів або jQuery.

  • 💡 Ключовий принцип: Підказка – це текст, який відображається під час наведення курсора, тому стратегія перевірки залежить від того, де браузер зберігає цей текст у DOM.
  • 🏷️ Статичні підказки: Для підказок на основі заголовків HTML викличте getAttribute("title") or getDomAttribute("title") та порівняйте з очікуваним рядком.
  • 🖱️ Динамічні підказки: Для підказок jQuery, CSS або плагінів використовуйте клас Actions з moveToElement(target).build().perform() перед читанням елемента підказки.
  • 🇧🇷 Найкраща практика: Зачекайте, поки контейнер підказки стане видимим після наведення курсора, а потім підтвердіть текст за допомогою getText() щоб уникнути застарілих або порожніх читань.
  • ???? Selenium 4 Порада: пара Selenium Менеджер із явним очікуванням замість Thread.sleep для стабільних перевірок підказок без використання шляху до драйвера.

Перевірити підказку в Selenium веб-драйвер

Підказка в Selenium

A Підказка в Selenium — це короткий текст, який з’являється, коли курсор миші наводиться на об’єкт на веб-сторінці. Об’єктом може бути посилання, зображення, кнопка або текстова область. Підказка часто надає більше інформації про елемент під курсором.

Підказки традиційно реалізовувалися як атрибут «title» елемента. Значення цього атрибута відображалося як підказка при наведенні курсора миші. Це статичний текст, що надає інформацію про елемент без стилізації.

Сьогодні доступно багато плагінів для реалізації підказок. Розширені підказки зі стилізацією, рендерингом, зображеннями та посиланнями створюються за допомогою JavaПлагіни скриптів або jQuery, або ж підказки лише на CSS.

  • Щоб отримати доступ до статичних підказок, реалізованих за допомогою атрибута HTML «title», або перевірити їх, використовуйте getAttribute("title") метод на WebElement. Повернене значення (текст підказки) порівнюється з очікуваним значенням для перевірки.
  • Для інших реалізацій підказок використовуйте «API розширеної взаємодії з користувачем», що надається WebDriver, щоб створити ефект наведення курсора миші, а потім отримати підказку для елемента.

Коротка інформація про Advanced User Interactions API

API розширеної взаємодії з користувачем надає доступ до таких дій користувача, як перетягування, наведення курсора, вибір кількох елементів, натискання та відпускання клавіш, а також інші дії клавіатури або миші на веб-сторінці.

Ви можете звернутися до цього офіційний довідник класу Actions щоб дізнатися більше про API.

Перед стрибкомping Розглянемо різні сценарії, зокрема класи та методи, необхідні для переміщення елемента-слайдера на певне зміщення.

Крок 1) Щоб використовувати API, імпортуйте такі пакети та класи:

Advanced User Interactions API

Крок 2) Створіть об'єкт класу «Дії» та побудуйте послідовність дій користувача. Клас Дії будує ланцюгові дії, такі як moveToElement() та dragAndDrop(). Об'єкт драйвера передається як параметр його конструктору.

Advanced User Interactions API

Крок 3) Створіть об'єкт Action за допомогою методу build() класу “Actions”. Викличте метод perform() для виконання кожної дії з черги в конструкторі.

Advanced User Interactions API

Ми розглянули, як використовувати деякі методи дій користувача, що надаються API: clickAndHold(element), moveByOffset(10, 0) та release(). API надає багато інших.

Реалізація підказки проти Selenium Підхід до перевірки

Тип підказки Як це відображається Selenium Підхід
Атрибут заголовка HTML Текст зберігається на самому елементі; браузер відображається при наведенні курсора. Читати з getAttribute("title") or getDomAttribute("title")Не потрібно наводити курсор.
jQuery / JS плагін Виділений div відображається поруч з елементом при наведенні курсора миші. Використовуйте дії moveToElement(target).perform(), зачекайте, а потім прочитайте елемент підказки за допомогою getText().
Підказка лише для CSS Псевдоелемент або рідний div перемикається за допомогою :hover. Запустіть наведення курсора за допомогою «Дій» та зчитайте відображений текст або обчислений стиль.

Як перевірити (обробити) підказку в Selenium

Давайте розглянемо доступ до підказок та їх перевірку на прикладі двох поширених сценаріїв:

  • Сценарій 1: Підказка реалізована за допомогою атрибута «title».
  • Сценарій 2: Підказка реалізована за допомогою плагіна jQuery.

Сценарій 1: Атрибут HTML «title»

У цьому випадку ми використовуємо приклад сайту https://demo.guru99.com/test/social-icon.html і перевірте підказку до значка «github» у верхньому правому куті сторінки.

Атрибут HTML 'title'

Спочатку ми знаходимо елемент, потім зчитуємо його атрибут «title» та порівнюємо його з очікуваним текстом підказки.

Оскільки підказка знаходиться в атрибуті «title», ми навіть не автоматизуємо наведення миші; ми просто отримуємо значення атрибута за допомогою методу getAttribute().

Атрибут HTML 'title'

Ось код:

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.*;

public class ToolTip {
    public static void main(String[] args) {

        String baseUrl = "https://demo.guru99.com/test/social-icon.html";
        System.setProperty("webdriver.chrome.driver", "G:\\chromedriver.exe");
        WebDriver driver = new ChromeDriver();
        driver.get(baseUrl);
        String expectedTooltip = "Github";

        // Find the Github icon at the top right of the header
        WebElement github = driver.findElement(By.xpath(".//*[@class='soc-ico show-round']/a[4]"));

        // Read the "title" attribute value of the Github icon
        String actualTooltip = github.getAttribute("title");

        // Assert that the tooltip value matches the expected one
        System.out.println("Actual Title of Tool Tip " + actualTooltip);
        if (actualTooltip.equals(expectedTooltip)) {
            System.out.println("Test Case Passed");
        }
        driver.close();
    }
}

Пояснення коду:

  1. Знайдіть WebElement, що представляє значок «github».
  2. Зчитайте його атрибут «title» за допомогою методу getAttribute().
  3. Підтвердіть значення відповідно до очікуваного тексту підказки.

Selenium 4 порада: Віддавайте перевагу getDomAttribute("title") для літерального атрибута HTML, і нехай Selenium Менеджер вирішує проблему з драйвером замість жорсткого кодування chromedriver.exe.

Сценарій 2: Плагін jQuery

Багато плагінів jQuery реалізують підказки, і кожен з них відображається дещо по-різному.

Деякі плагіни постійно зберігають розмітку підказки поруч із елементом тригера, тоді як інші динамічно створюють тег «div», коли курсор потрапляє на тригер.

Для цієї демонстрації ми використовуємо стиль «jQuery Tools Tooltip».

відкритий https://demo.guru99.com/test/tooltip.html; якщо навести курсор на «Завантажити зараз», відобразиться розширена підказка із зображенням, фоном для виноски, невеликою таблицею та посиланням, на яке можна натиснути.

Підказка плагіна jQuery

Якщо ви перевірите вихідний код, то побачите, що div, що представляє підказку, вже знаходиться поруч із посиланням «Завантажити зараз». Тег скрипта нижче контролює, коли вона з’являється.

Джерело підказки плагіна jQuery

Тепер перевіряємо текст посилання, що відображається всередині підказки.

Спочатку знайдіть WebElement для опції «Завантажити зараз». Використайте Interactions API, щоб перейти до елемента (наведіть курсор миші). Далі знайдіть WebElement, який відповідає посиланню всередині відображеної підказки, і перевірте її текст на відповідність очікуваному значенню.

Перевірка підказки плагіна jQuery

Ось код:

import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.*;

public class JqueryToolTip {
    public static void main(String[] args) {

        String baseUrl = "https://demo.guru99.com/test/tooltip.html";
        System.setProperty("webdriver.chrome.driver", "G:\\chromedriver.exe");

        WebDriver driver = new ChromeDriver();
        String expectedTooltip = "What's new in 3.2";
        driver.get(baseUrl);

        WebElement download = driver.findElement(By.xpath(".//*[@id='download_now']"));
        Actions builder = new Actions(driver);

        // Hover over the "Download now" link to reveal the tooltip
        builder.moveToElement(download).build().perform();

        WebElement toolTipElement = driver.findElement(By.xpath(".//*[@class='box']/div/a"));
        String actualTooltip = toolTipElement.getText();

        System.out.println("Actual Title of Tool Tip " + actualTooltip);
        if (actualTooltip.equals(expectedTooltip)) {
            System.out.println("Test Case Passed");
        }
        driver.close();
    }
}

Code Пояснення:

  1. Знайдіть WebElement, який відповідає елементу «Завантажити зараз», на який ви наведете курсор миші.
  2. Використайте Interactions API, щоб навести курсор на «Завантажити зараз».
  3. Щойно підказка стане видимою, знайдіть WebElement, що представляє посилання всередині підказки (тег «a»).
  4. Прочитайте текст підказки за допомогою getText() і порівняйте його з очікуваним значенням, що зберігається в expectedTooltip.

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

Якщо підказка створена з використанням атрибута HTML title, викличте getAttribute(“title”) або getDomAttribute(“title”) для WebElement та порівняйте повернутий текст з очікуваним значенням.

Використайте клас Actions для moveToElement(target).perform(), зачекайте, поки елемент підказки стане видимим, потім зчитайте його текст або атрибут за допомогою getText() та підтвердіть значення.

Він повертає значення null, коли елемент не має атрибута title або текст підказки відображається динамічно через окремий div. Перевірте DOM та виберіть таргетинг на фактичний контейнер підказки.

Інструменти на базі штучного інтелекту автоматично генерують локатори, самовідновлюються при зміні DOM та пропонують послідовності наведення миші, що зменшує нестабільні тести підказок та час обслуговування в різних браузерах.

Так. Сучасні помічники зі штучним інтелектом сканують сторінку, виявляють елементи, на які можна навести курсор, і генерують готові до роботи Selenium скрипти з твердженнями, що значно скорочує зусилля на ручне написання скриптів для покриття підказок.

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