Как да проверите подсказка в Selenium

⚡ Умно обобщение

Проверете подсказката в Selenium WebDriver обхваща два надеждни модела за утвърждаване на текст на подсказки: директно четене на HTML атрибута title и използване на Actions 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. Върнатата стойност (текстът на подсказката) се сравнява с очаквана стойност за проверка.
  • За други имплементации на подсказки, използвайте „Advanced User Interactions API“, предоставен от WebDriver, за да създадете ефекта на задържане на курсора на мишката и след това да извлечете подсказката за елемента.

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

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

Можете да се позовавате на това Официална справка за класа Actions за повече подробности относно 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“ и го сравняваме с очаквания текст на подсказката.

Тъй като подсказката е в атрибута „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 Plugin Tooltip

Сега проверяваме текста на връзката, показан в подсказката.

Първо намерете 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(), изчакайте, докато елементът tooltip стане видим, след което прочетете неговия текст или атрибут с getText() и потвърдете стойността.

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

Инструментите, задвижвани от изкуствен интелект, генерират локатори автоматично, самовъзстановяват селектори при промяна на DOM и предлагат последователности при задържане на курсора, намалявайки нестабилните тестове на подсказките и времето за поддръжка в различните браузъри.

Да. Съвременните асистенти с изкуствен интелект сканират страницата, откриват елементи, върху които може да се задържи курсорът, и генерират готови за изпълнение елементи. Selenium скриптове с твърдения, което значително намалява усилията за ръчно писане на скриптове за покритие на подсказките.

Обобщете тази публикация с: