Подсказка в Selenium
Подсказке в Селен является текст , который появляется , когда курсор мыши находится над объектом на веб - странице. Объектом может быть ссылка, изображение, кнопка, текстовая область и т. Д. Текст всплывающей подсказки часто дает дополнительную информацию об объекте, на который пользователь наводит курсор мыши.
Всплывающие подсказки традиционно реализовывались как атрибут «заголовок» элемента. Значение этого атрибута отображается во всплывающей подсказке при наведении курсора мыши. Это статический текст, содержащий информацию об элементе без стиля.
Теперь для реализации «подсказок» доступно множество плагинов. Расширенные всплывающие подсказки со стилями, рендерингом, изображениями и ссылками реализуются с использованием плагинов JavaScript / JQuery или с помощью всплывающих подсказок CSS.
- Для доступа или проверки статических всплывающих подсказок, которые реализованы с использованием атрибута HTML "title", мы можем просто использовать метод getAttribute ("title") WebElement. Возвращаемое значение этого метода (которое является текстом всплывающей подсказки) сравнивается с ожидаемым значением для проверки.
- Для других форм реализации всплывающих подсказок нам придется использовать «API расширенного взаимодействия с пользователем», предоставляемый веб-драйвером, чтобы создать эффект наведения курсора мыши, а затем получить всплывающую подсказку для элемента.
Краткое описание API расширенного взаимодействия с пользователем:
Advanced User Interactions API предоставляет API для действий пользователя, таких как перетаскивание, наведение, множественный выбор, нажатие и отпускание клавиш, а также другие действия с использованием клавиатуры или мыши на веб-странице.
Вы можете обратиться по этой ссылке для получения более подробной информации об API.
https://seleniumhq.github.io/selenium/docs/api/java/index.html?org/openqa/selenium/interactions/Actions.html
Здесь давайте посмотрим, как использовать пару классов и методов, которые нам понадобятся для перемещения элемента слайдера на смещение.
Шаг 1) Чтобы использовать API, необходимо импортировать следующие пакеты / классы:
Шаг 2) Создайте объект класса «Действия» и постройте Последовательность действий пользователя. Класс Actions используется для построения последовательности действий пользователя, таких как moveToElement (), dragAndDrop () и т. Д. API предоставляет различные методы, связанные с действиями пользователя.
Объект драйвера предоставляется в качестве параметра его конструктору.
Шаг 3) Создайте объект действия, используя метод build () класса «Действия». Вызовите метод perform (), чтобы выполнить все действия, созданные объектом Actions (здесь построитель).
Мы увидели, как использовать некоторые пользовательские методы действий, предоставляемые API - clickAndHold (element), moveByOffset (10,0), release (). API предоставляет множество таких методов.
См. Ссылку для получения более подробной информации.
Как получить текст всплывающей подсказки в Selenium Webdriver
Давайте посмотрим, как получить доступ к подсказкам и проверить их в простом сценарии.
- Сценарий 1. Всплывающая подсказка реализована с использованием атрибута title.
- Сценарий 2: всплывающая подсказка реализована с использованием подключаемого модуля jQuery.
Сценарий 1: HTML-атрибут title
В этом случае возьмем пример сайта - http://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 = "http://demo.guru99.com/test/social-icon.html";System.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");Драйвер WebDriver = новый ChromeDriver ();driver.get (baseUrl);String expectedTooltip = "Github";// Находим значок Github в правом верхнем углу заголовкаWebElement github = driver.findElement (By.xpath (".//*[@ class = 'soc-ico show-round'] / a [4]"));// получаем значение атрибута title значка githubString actualTooltip = github.getAttribute ("название");// Подтверждаем, что значение всплывающей подсказки соответствует ожиданиямSystem.out.println («Фактическое название подсказки» + actualTooltip);if (actualTooltip.equals (expectedTooltip)) {System.out.println («Тестовый пример пройден»);}driver.close ();}}
Пояснение к коду
- Найдите WebElement, представляющий значок «github».
- Получите его атрибут "title" с помощью метода getAttribute ().
- Подтвердите значение по ожидаемому значению всплывающей подсказки.
Сценарий 2: Плагин JQuery:
Для реализации всплывающих подсказок доступно множество подключаемых модулей JQuery, и каждый из них имеет несколько иную форму реализации.
Некоторые плагины ожидают, что HTML всплывающей подсказки будет постоянно присутствовать рядом с элементом, для которого применима всплывающая подсказка, тогда как другие создают динамический тег «div», который появляется на лету при наведении курсора на элемент.
Для нашей демонстрации давайте рассмотрим способ реализации всплывающей подсказки "jQuery Tools Tooltip".
Здесь, по URL-адресу - http://demo.guru99.com/test/tooltip.html, вы можете увидеть демонстрацию, в которой при наведении курсора мыши на «Загрузить сейчас» мы получаем расширенную всплывающую подсказку с изображением, фоном выноски, таблицей и ссылка внутри него, которую можно щелкнуть.
Если вы посмотрите на источник ниже, вы увидите, что тег div, представляющий всплывающую подсказку, всегда присутствует рядом с тегом ссылки «Загрузить сейчас». Но код внутри тега скрипта ниже управляет тем, когда он должен всплывать.
Давайте попробуем проверить только текст ссылки во всплывающей подсказке для нашей демонстрации здесь.
Сначала мы найдем WebElement, соответствующий «Загрузить сейчас». Затем, используя API взаимодействий, мы перейдем к элементу (при наведении курсора мыши). Затем мы найдем WebElement, соответствующий ссылке внутри отображаемой всплывающей подсказки, и сверим его с ожидаемым текстом.
Вот код
import org.openqa.selenium.interactions.Action;импортировать 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 = "http://demo.guru99.com/test/tooltip.html";System.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");Драйвер WebDriver = новый ChromeDriver ();String expectedTooltip = "Что нового в версии 3.2";driver.get (baseUrl);WebElement download = driver.findElement (By.xpath (".//*[@ id = 'download_now']"));Конструктор действий = новые действия (драйвер);builder.clickAndHold (). moveToElement (скачать);builder.moveToElement (скачать) .build (). perform ();WebElement toolTipElement = driver.findElement (By.xpath (".//*[@ class = 'box'] / div / a"));String actualTooltip = toolTipElement.getText ();System.out.println («Фактическое название подсказки» + actualTooltip);if (actualTooltip.equals (expectedTooltip)) {System.out.println («Тестовый пример пройден»);}driver.close ();}}
Код Пояснение
- Найдите WebElement, соответствующий элементу «загрузить сейчас», на который мы наведем курсор мыши.
- Используя API взаимодействия, наведите указатель мыши на «Загрузить сейчас».
- Предполагая, что всплывающая подсказка отображается, найдите WebElement, который соответствует ссылке внутри всплывающей подсказки, то есть тегу «a».
- Проверьте текст всплывающей подсказки ссылки, полученный с помощью getText (), на соответствие ожидаемому значению, которое мы сохранили в "expectedToolTip"
Резюме:
В этом руководстве вы узнали, как получить доступ к всплывающим подсказкам с помощью драйвера Selenium Web.
- Подсказки реализуются по-разному -
- Базовая реализация основана на атрибуте HTML "title". getAttribute (title) получает значение всплывающей подсказки.
- Для других реализаций всплывающих подсказок, таких как JQuery, всплывающие подсказки CSS требуют API взаимодействия для создания эффекта наведения курсора мыши.
- API расширенного взаимодействия с пользователем
- moveToElement (элемент) класса Actions используется для наведения курсора мыши на элемент.
- Метод Build () класса Actions преобразует последовательность действий пользователя в объект Action.
- Perform () класса Action выполняет сразу всю последовательность действий пользователя.
- Чтобы проверить всплывающую подсказку, мы должны сначала навести указатель мыши на элемент, затем найти элемент, соответствующий всплывающей подсказке, и получить его текст или другие значения для проверки на соответствие ожидаемым значениям.