Класс действия в Selenium
⚡ Умное резюме
Класс действия в Selenium Обрабатывает расширенные события клавиатуры и мыши, такие как наведение курсора, перетаскивание, щелчок правой кнопкой мыши и комбинации клавиш, через API расширенных взаимодействий с пользователем. В этом руководстве объясняются классы Actions и Action, ключевые методы и как объединять несколько взаимодействий в одну последовательность.

Класс действия в Selenium
Класс действия в Selenium Это встроенная функция для обработки событий клавиатуры и мыши. Она поддерживает такие операции, как множественные щелчки клавишей Control, перетаскивание и многое другое. Эти операции выполняются с помощью API расширенного взаимодействия с пользователем. Selenium ВебДрайвер.
Обработка событий клавиатуры и мыши
Обработка специальных событий клавиатуры и мыши осуществляется с помощью API расширенного взаимодействия с пользователем, Он содержит Действия и Экшн Для выполнения этих событий необходимы следующие классы. Ниже перечислены наиболее часто используемые события клавиатуры и мыши, предоставляемые классом Actions.
| Способ доставки | Описание |
|---|---|
| нажмите и удерживайте() | Щелкает (не отпуская) в текущем местоположении мыши. |
| контекстклик() | Выполняет контекстный щелчок (щелчок правой кнопкой мыши) в текущем местоположении курсора. |
| Двойной клик() | Выполняет двойной щелчок в текущем местоположении мыши. |
| dragAndDrop(источник, цель) | Нажатие и удержание кнопки мыши на исходном элементе, перемещение к целевому элементу, затем отпускание кнопки мыши. Параметры: source (элемент, на который нужно нажать), target (элемент, на котором нужно отпустить кнопку мыши). |
| dragAndDropBy(источник, смещение по оси X, смещение по оси Y) | Нажатие и удержание кнопки мыши на исходном элементе приводит к перемещению на заданное смещение, после чего кнопка отпускает. Параметры: источник, xOffset (горизонтальное смещение), yOffset (вертикальное смещение). |
| keyDown (modifier_key) | Нажимает клавишу-модификатор, не отпуская её, поэтому при последующих взаимодействиях предполагается, что она остаётся нажатой. Параметр: клавиша-модификатор (Keys.ALT, Keys.SHIFT или Keys.CONTROL). |
| keyUp(modifier_key) | Освобождает клавишу-модификатор. Параметр: клавиша-модификатор (Keys.ALT, Keys.SHIFT или Keys.CONTROL). |
| moveByOffset (смещение по оси X, смещение по оси Y) | Перемещает курсор мыши из его текущей позиции (или 0,0) на заданное смещение. Отрицательное значение x перемещает курсор влево; отрицательное значение y перемещает курсор вверх. |
| перемещениеToElement(toElement) | Перемещает курсор мыши в середину элемента. Параметр: элемент, к которому нужно переместить курсор. |
| релиз() | Отпускает нажатую левую кнопку мыши в текущем положении. |
| sendKeys (onElement, последовательность символов) | Отправляет последовательность нажатий клавиш элементу. Параметры: onElement (обычно текстовое поле), charsequence (последовательность нажатий клавиш для отправки). |
В следующем примере мы используем moveToElement() способ навести курсор на один из Mercury Ряды столиков для экскурсий.
Изображенная выше клетка является частью Элемент. В спокойном состоянии его цвет — #FFC455 (оранжевый). После наведения курсора цвет ячейки становится прозрачным и соответствует фону окружающей таблицы.
Шаг 1) Импортируйте Действия и Экшн классов.
Шаг 2) Создайте экземпляр нового объекта Actions.
Шаг 3) Создайте экземпляр действия, используя объект 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();
}





