Дія Клас в Selenium

⚡ Розумний підсумок

Дія Клас в Selenium обробляє розширені події клавіатури та миші, такі як наведення курсора, перетягування, клацання правою кнопкою миші та комбінації клавіш, за допомогою API розширеної взаємодії з користувачем. У цьому посібнику пояснюються класи Actions та Action, методи key та спосіб об'єднання кількох взаємодій в одну послідовність.

  • 🖱️ Основна мета: Клас Actions автоматизує складні події миші та клавіатури, які звичайний click() не може.
  • 🔑 Два класи: Дії будують взаємодію; Дії зберігають скомпільовану послідовність для виконання.
  • 🧱 Збери, а потім виконай: З'єднайте методи в ланцюжок, завершіть за допомогою build() та запустіть за допомогою perform().
  • 📋 Основні методи: moveToElement(), dragAndDrop(), keyDown()/keyUp(), contextClick() та sendKeys().
  • 🤖 Впровадження штучного інтелекту: Помічники штучного інтелекту генерують код класу Action та самовідновлюються локатори під час тестів взаємодії.

Вивід при наведенні курсора миші

Дія Клас в Selenium

Дія Клас в Selenium – це вбудована функція для обробки подій клавіатури та миші. Вона підтримує такі операції, як багаторазове натискання клавіші Control, перетягування та багато інших. Ці операції виконуються за допомогою API розширеної взаємодії з користувачем у Selenium WebDriver.

Обробка подій клавіатури та миші

Обробка спеціальних подій клавіатури та миші здійснюється за допомогою Advanced User Interactions API. Він містить Дії та дію класи, необхідні для виконання цих подій. Найчастіше використовувані події клавіатури та миші, що надаються класом Actions, перелічені нижче.

Метод Опис
clickAndHold() Клацає (не відпускаючи) у поточному положенні миші.
contextClick() Виконує контекстне клацання (клацання правою кнопкою миші) у поточному місці розташування миші.
doubleClick() Виконує подвійне клацання в поточному місці миші.
dragAndDrop(джерело, ціль) Клацає та утримує кнопку миші на вихідному елементі, переміщує до цільового елемента, потім відпускає кнопку миші. Параметри: джерело (елемент, на який потрібно натиснути), ціль (елемент, на якому потрібно відпустити).
dragAndDropBy(джерело, x-зсув, y-зсув) Клацання та утримання на елементі джерела, переміщення на задане зміщення, а потім відпускання. Параметри: джерело, xOffset (горизонтальне), yOffset (вертикальне).
keyDown(клавіша_модифікатора) Натискає клавішу-модифікатор, не відпускаючи її, тому наступні взаємодії передбачають, що вона залишається натиснутою. Параметр: клавіша-модифікатор (Keys.ALT, Keys.SHIFT або Keys.CONTROL).
keyUp(клавіша_модифікатора) Відпускає клавішу-модифікатор. Параметр: клавіша-модифікатор (Keys.ALT, Keys.SHIFT або Keys.CONTROL).
moveByOffset(х-зсув, y-зсув) Переміщує мишу з її поточної позиції (або 0,0) на задане зміщення. Від'ємний x переміщує ліворуч; від'ємний y переміщує вгору.
moveToElement(toElement) Переміщує курсор миші до середини елемента. Параметр: елемент, до якого потрібно переміститися.
випуск() Відпускає натиснуту ліву кнопку миші в поточному місці.
sendKeys(onElement, charsequence) Надсилає послідовність натискань клавіш до елемента. Параметри: onElement (зазвичай текстове поле), charsequence (натискання клавіш для надсилання).

У наступному прикладі ми використовуємо moveToElement() метод наведення курсора на один із Mercury Рядки таблиці турів.

Обробка подій клавіатури та миші

Зображена вище клітина є частиною елемент. Якщо не наводити курсор, його колір – #FFC455 (помаранчевий). Після наведення курсора колір комірки стає прозорим і відповідає фону навколишньої таблиці.

Крок 1) Імпортуйте Дії та дію класи.

Імпорт дій та класів дій

Крок 2) Створіть новий об’єкт Actions.

Створення екземпляра об'єкта «Дії»

Крок 3) Створіть екземпляр Action за допомогою об'єкта Actions з кроку 2.

Створення екземпляра об'єкта Action

Тут ми використовуємо moveToElement() метод наведення курсора на посилання «Головна». build() Метод завжди викликається останнім, щоб усі перелічені дії об'єднувалися в один крок.

Крок 4) Ввімкніть кнопку perform() метод для виконання об'єкта Action, розробленого на кроці 3.

Виконайте дію

Нижче наведено повний код WebDriver, який перевіряє колір фону елемент до та після наведення курсора миші.

package newproject;

import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.interactions.Action;
import org.openqa.selenium.interactions.Actions;

public class PG7 {

    public static void main(String[] args) {
        String baseUrl = "https://demo.guru99.com/test/newtours/";
        System.setProperty("webdriver.gecko.driver", "C:\\geckodriver.exe");
        WebDriver driver = new FirefoxDriver();

        driver.get(baseUrl);
        WebElement link_Home = driver.findElement(By.linkText("Home"));
        WebElement td_Home = driver.findElement(By.xpath(
            "//html/body/div/table/tbody/tr/td"
            + "/table/tbody/tr/td"
            + "/table/tbody/tr/td"
            + "/table/tbody/tr"));

        Actions builder = new Actions(driver);
        Action mouseOverHome = builder.moveToElement(link_Home).build();

        String bgColor = td_Home.getCssValue("background-color");
        System.out.println("Before hover: " + bgColor);
        mouseOverHome.perform();
        bgColor = td_Home.getCssValue("background-color");
        System.out.println("After hover: " + bgColor);
        driver.close();
    }
}

Наведений нижче результат показує, що колір фону став прозорим після наведення курсора миші.

Вивід при наведенні курсора миші

Побудова серії кількох дій

Ви можете створити серію дій, використовуючи класи Action та Actions. Не забудьте завершити серію за допомогою build() метод. Розгляньте приклад коду нижче.

Побудова серії з кількох дій

public static void main(String[] args) {
    String baseUrl = "https://www.facebook.com/";
    WebDriver driver = new FirefoxDriver();

    driver.get(baseUrl);
    WebElement txtUsername = driver.findElement(By.id("email"));

    Actions builder = new Actions(driver);
    Action seriesOfActions = builder
        .moveToElement(txtUsername)
        .click()
        .keyDown(txtUsername, Keys.SHIFT)
        .sendKeys(txtUsername, "hello")
        .keyUp(txtUsername, Keys.SHIFT)
        .doubleClick(txtUsername)
        .contextClick()
        .build();

    seriesOfActions.perform();
}

Вихідний результат серії дій

Поширені запитання

Клас Action являє собою скомпільовану послідовність взаємодій клавіатури та миші, побудовану за допомогою класу Actions. Він виконується через API розширеної взаємодії з користувачем у Selenium WebDriver.

Дії (множина) – це конструктор, який використовується для поєднання взаємодій, таких як наведення курсора та клік. Дія (однина) – це скомпільований об'єкт, що повертається build() та виконується за допомогою perform().

build() компілює всі ланцюгові взаємодії в одну складену дію (Action). Вона завжди викликається останньою, безпосередньо перед perform(), тому кроки в черзі виконуються разом як одна послідовність.

perform() виконує вбудовану дію Action у браузері. Без неї ланцюгові взаємодії лише ставляться в чергу і ніколи фактично не надсилаються на сторінку.

Використайте moveToElement(element) для об'єкта Actions, а потім викличте build() та perform(). Це перемістить курсор у центр елемента та активує будь-яку поведінку при наведенні курсора, наприклад, випадаюче меню.

Він підтримує clickAndHold, contextClick, doubleClick, dragAndDrop, dragAndDropBy, keyDown, keyUp, moveByOffset, moveToElement, release та sendKeys — охоплюючи більшість складних взаємодій.

Інструменти штучного інтелекту використовують локатори з функцією самовідновлення, які адаптуються до зміни елементів, зменшуючи нестабільні збої в тестах наведення курсора та перетягування. Вони також рекомендують стабільні XPath та автоматично додають інтелектуальні очікування.

Так. Помічники коду ШІ перетворюють простий сценарій, такий як «наведіть курсор на «Головну», а потім клацніть правою кнопкою миші», на робочий ланцюжок дій за допомогою build() та perform() і пропонують надійні локатори.

Підсумуйте цей пост за допомогою: