Дія Клас в Selenium

У цьому посібнику ми навчимося працювати з подіями клавіатури та миші Selenium Веб-драйвер

Дія Клас в Selenium

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

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

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

Метод Опис
clickAndHold() Клацає (не відпускаючи) у поточному положенні миші.
contextClick() Виконує контекстне клацання в поточному місці миші. (Клацніть правою кнопкою миші)
doubleClick() Виконує подвійне клацання в поточному місці миші.
dragAndDrop(джерело, ціль) Виконує клацання й утримання в місці розташування вихідного елемента, переміщення до розташування цільового елемента, а потім відпускає кнопку миші.

Параметри:

джерело - елемент для емуляції кнопки вниз.

цільовий елемент, до якого потрібно переміститися та відпустити кнопку миші.

dragAndDropBy(джерело, x-зсув, y-зсув) Виконує клацання й утримання в місці розташування вихідного елемента, переміщення на задане зміщення, а потім відпускає кнопку миші.

Параметри:

джерело - елемент для емуляції кнопки вниз.

xOffset - зміщення горизонтального переміщення.

yOffset - зсув вертикального переміщення.

keyDown(клавіша_модифікатора) Виконує натискання клавіші-модифікатора. Не відпускає клавішу-модифікатор – наступні взаємодії можуть вважати, що вона залишається натиснутою.

Параметри:

modifier_key – будь-яка з клавіш-модифікаторів (Keys.ALT, Keys.SHIFT або Keys.CONTROL)

keyUp(модифікатор _key) Виконує звільнення ключа.

Параметри:

modifier_key – будь-яка з клавіш-модифікаторів (Keys.ALT, Keys.SHIFT або Keys.CONTROL)

moveByOffset(х-зсув, y-зсув) Переміщує мишу з її поточної позиції (або 0,0) на вказане зміщення.

Параметри:

x-offset- горизонтальне зміщення. Від’ємне значення означає переміщення миші вліво.

y-offset- вертикальне зміщення. Від’ємне значення означає переміщення миші вниз.

moveToElement(toElement) Переміщує мишу в середину елемента.

Параметри:

toElement - елемент для переходу.

випуск() Відпускає натиснуту ліву кнопку миші в поточному місці миші
sendKeys(onElement, charsequence) Надсилає ряд натискань клавіш на елемент.

Параметри:

onElement – ​​елемент, який отримуватиме натискання клавіш, зазвичай текстове поле

charsequence – будь-яке рядкове значення, що представляє послідовність натискань клавіш, які потрібно надіслати

У наступному прикладі ми використаємо метод moveToElement(), щоб навести курсор миші на один Mercury Рядки таблиці турів. Дивіться приклад нижче.

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

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

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

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

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

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

Крок 3) Створіть екземпляр дії за допомогою об’єкта Actions на кроці 2.

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

У цьому випадку ми будемо використовувати метод moveToElement(), тому що ми просто збираємося навести курсор на посилання «Home». Метод 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();
        }
}

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

Дія Клас в Selenium

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

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

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

public static void main(String[] args) {
String baseUrl = "http://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() ;

}

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

Підсумки

  • Обробка спеціальних подій клавіатури та миші здійснюється за допомогою API AdvancedUserInteractions.
  • Подіями ключових слів і миші, які часто використовуються, є doubleClick(), keyUp, dragAndDropBy, contextClick і sendKeys.