Как проверить всплывающую подсказку в Selenium
⚡ Умное резюме
Проверьте всплывающую подсказку в Selenium WebDriver предлагает два надежных способа проверки текста всплывающей подсказки: прямое чтение атрибута title из HTML и использование API Actions для наведения курсора на динамически отображаемые элементы. JavaВсплывающие подсказки, созданные с помощью скриптов или jQuery.
Подсказка в Selenium
A Подсказка в Selenium Всплывающая подсказка — это короткий текст, который появляется при наведении курсора мыши на объект на веб-странице. Объектом может быть ссылка, изображение, кнопка или текстовое поле. Текст всплывающей подсказки часто предоставляет дополнительную информацию об элементе под курсором.
Всплывающие подсказки традиционно реализовывались в виде атрибута «title» элемента. Значение этого атрибута отображалось в виде всплывающей подсказки при наведении курсора мыши. Это статический текст, предоставляющий информацию об элементе без какого-либо оформления.
Сегодня существует множество плагинов для реализации всплывающих подсказок. Расширенные всплывающие подсказки со стилями, рендерингом, изображениями и ссылками создаются с помощью плагинов. JavaПлагины на основе скриптов или jQuery, либо всплывающие подсказки, созданные только с помощью CSS.
- Для доступа или проверки статических всплывающих подсказок, реализованных с помощью атрибута HTML «title», используйте следующий код:
getAttribute("title")Метод объекта WebElement. Возвращаемое значение (текст всплывающей подсказки) сравнивается с ожидаемым значением для проверки. - Для других вариантов реализации всплывающих подсказок используйте «Расширенный API взаимодействия с пользователем», предоставляемый WebDriver, чтобы создать эффект наведения мыши, а затем получить всплывающую подсказку для элемента.
Краткое описание API расширенного взаимодействия с пользователем
API расширенных взаимодействий с пользователем предоставляет доступ к таким действиям пользователя, как перетаскивание, наведение курсора, множественный выбор, нажатие и отпускание клавиш, а также другим действиям с клавиатуры или мыши на веб-странице.
Вы можете обратиться к этому официальный справочник по классу действий для получения более подробной информации об API.
Перед прыжкомping Рассмотрим различные сценарии и классы и методы, необходимые для перемещения ползунка на заданное смещение.
Шаг 1) Для использования API импортируйте следующие пакеты и классы:
Шаг 2) Создайте объект класса «Actions» и сформируйте последовательность действий пользователя. Класс Actions формирует цепочки действий, такие как moveToElement() и dragAndDrop(). Объект-драйвер передается в качестве параметра его конструктору.
Шаг 3) Создайте объект Action, используя метод build() класса “Actions”. Вызовите метод perform() для выполнения всех действий из очереди в построителе.
Мы рассмотрели, как использовать некоторые методы действий пользователя, предоставляемые 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» в правом верхнем углу страницы.
Сначала мы находим элемент, затем считываем его атрибут «title» и сравниваем его с ожидаемым текстом всплывающей подсказки.
Поскольку всплывающая подсказка находится в атрибуте «title», мы даже не автоматизируем наведение курсора мыши; мы просто получаем значение атрибута с помощью метода getAttribute().
Вот код:
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(); } }
Расшифровка кода:
- Найдите WebElement, представляющий значок «github».
- Прочитайте атрибут «title» с помощью метода getAttribute().
- Сравните полученное значение с ожидаемым текстом всплывающей подсказки.
Selenium 4 совет: предпочитать getDomAttribute("title") для буквального HTML-атрибута и пусть Selenium Менеджер решает проблему с драйвером, вместо того чтобы жестко прописывать его в коде. chromedriver.exe.
Сценарий 2: Плагин jQuery
Многие плагины jQuery реализуют всплывающие подсказки, и каждый из них отображается немного по-разному.
Некоторые плагины постоянно сохраняют разметку всплывающей подсказки рядом с элементом-триггером, в то время как другие динамически создают тег «div», когда курсор попадает в триггер.
Для этой демонстрации мы используем стиль «jQuery Tools Tooltip».
Открыто https://demo.guru99.com/test/tooltip.htmlПри наведении курсора на кнопку «Скачать сейчас» появляется всплывающая подсказка с изображением, фоновым текстом, небольшой таблицей и кликабельной ссылкой.
Если вы посмотрите исходный код, то увидите, что div, представляющий всплывающую подсказку, уже расположен рядом со ссылкой «Скачать сейчас». Тег <script> ниже управляет тем, когда она появляется.
Теперь проверим текст ссылки, отображаемый во всплывающей подсказке.
Сначала найдите WebElement для "Скачать сейчас". Используйте Interactions API, чтобы перейти к элементу (при наведении курсора мыши). Затем найдите WebElement, соответствующий ссылке во всплывающей подсказке, и проверьте его текст на соответствие ожидаемому значению.
Вот код:
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 Объяснение:
- Найдите элемент WebElement, соответствующий элементу «Скачать сейчас», на который вы наведете курсор мыши.
- Используйте API взаимодействий, чтобы навести курсор на кнопку «Скачать сейчас».
- После того как всплывающая подсказка станет видимой, найдите внутри неё элемент WebElement, представляющий ссылку (тег "a").
- Прочитайте текст всплывающей подсказки с помощью
getText()и сравните его с ожидаемым значением, хранящимся вexpectedTooltip.









