Учебники

12) События клавиатуры мыши

В этом уроке мы научимся обрабатывать события клавиатуры и мыши в Selenium Webdriver

Обработка событий клавиатуры и мыши

Обработка специальных событий клавиатуры и мыши осуществляется с помощью API-интерфейса Advanced User Interactions . Он содержит действия и классы действий , которые необходимы при выполнении этих событий. Ниже приведены наиболее часто используемые события клавиатуры и мыши, предоставляемые классом Actions.

метод Описание
нажмите и удерживайте() Клики (без отпускания) в текущей позиции мыши.
contextClick () Выполняет контекстный щелчок в текущей позиции мыши. (Действие правой кнопки мыши)
Двойной клик() Выполняет двойной щелчок в текущей позиции мыши.
dragAndDrop (источник, цель) Выполняет щелчок и удержание в местоположении исходного элемента, перемещается в местоположение целевого элемента, а затем отпускает мышь.

Параметры:

исходный элемент для эмуляции кнопки внизу.

target-элемент для перемещения и отпускания мыши в.

dragAndDropBy (источник, смещение по x, смещение по y) Выполняет щелчок и удержание в месте расположения исходного элемента, перемещается на заданное смещение, затем отпускает мышь.

Параметры :

исходный элемент для эмуляции кнопки внизу.

xOffset — смещение по горизонтали.

yOffset — вертикальное смещение.

KeyDown (modifier_key) Выполняет нажатие клавиши-модификатора. Не отпускает клавишу-модификатор — последующие взаимодействия могут предполагать, что она остается нажатой.

Параметры :

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

keyUp (модификатор _key) Выполняет отпуск ключа.

Параметры :

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

moveByOffset (x-offset, y-offset) Перемещает мышь из текущей позиции (или 0,0) на заданное смещение.

Параметры :

смещение по горизонтали. Отрицательное значение означает перемещение мыши влево.

смещение по вертикали. Отрицательное значение означает перемещение мыши вниз.

moveToElement (toElement) Перемещает мышь к середине элемента.

Параметры :

toElement — элемент для перемещения.

релиз() Отпускает нажатую левую кнопку мыши в текущей позиции мыши
sendKeys (onElement, charsequence) Посылает серию нажатий клавиш на элемент.

Параметры :

onElement — элемент, который будет получать нажатия клавиш, обычно это

последовательность символов текстового поля — любое строковое значение, представляющее последовательность нажатий клавиш, которая будет отправлена

В следующем примере мы будем использовать метод moveToElement () для наведения мыши на строки таблицы одного Mercury Tours. Смотрите пример ниже.

Событие с клавиатурой и мышью с использованием класса действий в Selenium Webdriver

Показанная выше ячейка является частью элемента <TR>. Если не парить, его цвет # FFC455 (оранжевый). После наведения цвет ячейки становится прозрачным. Он становится того же цвета, что и синий фон всей оранжевой таблицы.

Шаг 1: Импортируйте действия и действия классов.

Событие с клавиатурой и мышью с использованием класса действий в Selenium Webdriver

Шаг 2. Создание нового объекта Actions.

Событие с клавиатурой и мышью с использованием класса действий в Selenium Webdriver

Шаг 3: Создайте действие с помощью объекта Actions на шаге 2.

Событие с клавиатурой и мышью с использованием класса действий в Selenium Webdriver

В этом случае мы собираемся использовать метод moveToElement (), потому что мы просто наведем указатель мыши на ссылку «Home». Метод build () всегда является последним используемым методом, поэтому все перечисленные действия будут скомпилированы в один шаг.

Шаг 4: Используйте метод execute () при выполнении объекта Action, который мы разработали на шаге 3.

Событие с клавиатурой и мышью с использованием класса действий в Selenium Webdriver

Ниже приведен весь код WebDriver для проверки цвета фона элемента <TR> до и после наведения мыши.

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 = "http://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 Webdriver

Построение серии множественных действий

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

Событие с клавиатурой и мышью с использованием класса действий в Selenium Webdriver

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() ;

}

Событие с клавиатурой и мышью с использованием класса действий в Selenium Webdriver

Резюме

  • Обработка специальных событий клавиатуры и мыши осуществляется с помощью API-интерфейса AdvancedUserInteractions.
  • Часто используемыми событиями Keyword и Mouse являются doubleClick (), keyUp, dragAndDropBy, contextClick & sendKeys.
  •