Как да проверите подсказка в Selenium
⚡ Умно обобщение
Проверете подсказката в Selenium WebDriver обхваща два надеждни модела за утвърждаване на текст на подсказки: директно четене на HTML атрибута title и използване на Actions API за задържане на курсора на мишката върху елементи, които рендират динамично. JavaПодсказки за скриптове или jQuery.

Подсказка в Selenium
A Подсказка в Selenium е кратък текст, който се появява, когато задържите курсора на мишката върху обект на уеб страница. Обектът може да бъде връзка, изображение, бутон или текстово поле. Текстът на подсказката често дава повече информация за елемента под курсора.
Подсказките традиционно се имплементираха като атрибут „title“ на елемент. Стойността на този атрибут се показваше като подсказка при задържане на курсора на мишката. Това е статичен текст, предоставящ информация за елемента без стилизиране.
Днес са налични много плъгини за имплементиране на подсказки. Разширените подсказки със стилизиране, рендиране, изображения и връзки се изграждат с помощта на JavaСкриптови или jQuery плъгини или с подсказки само за CSS.
- За да получите достъп или да проверите статични подсказки, внедрени чрез HTML атрибута „title“, използвайте
getAttribute("title")метод на WebElement. Върнатата стойност (текстът на подсказката) се сравнява с очаквана стойност за проверка. - За други имплементации на подсказки, използвайте „Advanced User Interactions API“, предоставен от WebDriver, за да създадете ефекта на задържане на курсора на мишката и след това да извлечете подсказката за елемента.
Кратко описание на API за разширени потребителски взаимодействия
API за разширени потребителски взаимодействия предоставя потребителски действия като плъзгане и пускане, задържане на курсора, множествен избор, натискане и отпускане на клавиши и други действия с клавиатура или мишка на уеб страница.
Можете да се позовавате на това Официална справка за класа Actions за повече подробности относно 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-ът, представляващ подсказката, вече се намира до връзката „Изтегли сега“. Тагът за скрипт по-долу контролира кога се появява.
Сега проверяваме текста на връзката, показан в подсказката.
Първо намерете 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, който съответства на елемента „Изтеглете сега“, върху който ще задържите курсора на мишката.
- Използвайте Interactions API, за да задържите курсора на мишката върху „Изтегляне сега“.
- След като подсказката е видима, намерете WebElement, представляващ връзката вътре в нея (тагът „a“).
- Прочетете текста на подсказката с
getText()и го сравнете с очакваната стойност, съхранена вexpectedTooltip.








