Как проверить всплывающую подсказку в Selenium

⚡ Умное резюме

Проверьте всплывающую подсказку в Selenium WebDriver предлагает два надежных способа проверки текста всплывающей подсказки: прямое чтение атрибута title из HTML и использование API Actions для наведения курсора на динамически отображаемые элементы. 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, чтобы создать эффект наведения мыши, а затем получить всплывающую подсказку для элемента.

Краткое описание API расширенного взаимодействия с пользователем

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

Вы можете обратиться к этому официальный справочник по классу действий для получения более подробной информации об API.

Перед прыжкомping Рассмотрим различные сценарии и классы и методы, необходимые для перемещения ползунка на заданное смещение.

Шаг 1) Для использования API импортируйте следующие пакеты и классы:

API расширенного взаимодействия с пользователем

Шаг 2) Создайте объект класса «Actions» и сформируйте последовательность действий пользователя. Класс Actions формирует цепочки действий, такие как moveToElement() и dragAndDrop(). Объект-драйвер передается в качестве параметра его конструктору.

API расширенного взаимодействия с пользователем

Шаг 3) Создайте объект Action, используя метод build() класса “Actions”. Вызовите метод perform() для выполнения всех действий из очереди в построителе.

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», мы даже не автоматизируем наведение курсора мыши; мы просто получаем значение атрибута с помощью метода getAttribute().

HTML-атрибут «заголовок»

Вот код:

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, представляющий всплывающую подсказку, уже расположен рядом со ссылкой «Скачать сейчас». Тег <script> ниже управляет тем, когда она появляется.

jQuery Plugin Tooltip source

Теперь проверим текст ссылки, отображаемый во всплывающей подсказке.

Сначала найдите 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. Используйте API взаимодействий, чтобы навести курсор на кнопку «Скачать сейчас».
  3. После того как всплывающая подсказка станет видимой, найдите внутри неё элемент WebElement, представляющий ссылку (тег "a").
  4. Прочитайте текст всплывающей подсказки с помощью getText() и сравните его с ожидаемым значением, хранящимся в expectedTooltip.

Часто задаваемые вопросы (FAQ)

Если всплывающая подсказка создана с использованием HTML-атрибута title, вызовите метод getAttribute(“title”) или getDomAttribute(“title”) для элемента WebElement и сравните возвращенный текст с ожидаемым значением.

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

Функция возвращает null, если у элемента отсутствует атрибут title или текст всплывающей подсказки отображается динамически через отдельный div. Проверьте DOM и выберите фактический контейнер всплывающей подсказки.

Инструменты на основе искусственного интеллекта автоматически генерируют локаторы, самовосстанавливают селекторы при изменении DOM и предлагают последовательности наведения курсора, что сокращает количество нестабильных тестов всплывающих подсказок и время на их обслуживание в разных браузерах.

Да. Современные ИИ-помощники сканируют страницу, распознают элементы, на которые наводится курсор, и генерируют готовые к использованию шаблоны. Selenium Использование скриптов с утверждениями значительно сокращает трудозатраты на ручное написание скриптов для анализа всплывающих подсказок.

Подведем итог этой публикации следующим образом: