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

Дія Клас в 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.
Тут ми використовуємо 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();
}





