Java: Selenium

Теория: Продвинутые пользовательские действия

Некоторые сценарии требуют сложных действий: наведение мыши, двойной клик, перетаскивание, работа с клавиатурой. В Selenium для этого используется класс Actions.

Наведение и двойной клик

import org.junit.jupiter.api.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.interactions.Actions;

class HoverClickTest {
    @Test
    void hoverAndDoubleClick() {
        var driver = new ChromeDriver();
        driver.get("https://example.com");

        var menu = driver.findElement(By.id("menu"));
        var item = driver.findElement(By.id("menu-item"));

        Actions actions = new Actions(driver);
        actions.moveToElement(menu).perform();
        actions.doubleClick(item).perform();

        driver.quit();
    }
}

Drag and Drop

import org.junit.jupiter.api.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.interactions.Actions;

class DragAndDropTest {
    @Test
    void dragAndDrop() {
        var driver = new ChromeDriver();
        driver.get("https://example.com");

        var source = driver.findElement(By.id("drag"));
        var target = driver.findElement(By.id("drop"));

        new Actions(driver)
            .dragAndDrop(source, target)
            .perform();

        driver.quit();
    }
}

Работа с клавиатурой и фокусом

import org.junit.jupiter.api.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;

class KeyboardTest {
    @Test
    void sendEnter() {
        var driver = new ChromeDriver();
        driver.get("https://example.com");

        var input = driver.findElement(By.id("search"));
        input.sendKeys("selenium");
        input.sendKeys(Keys.ENTER);

        driver.quit();
    }
}

Комбинации клавиш выполняются через Keys:

import org.junit.jupiter.api.Test;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.interactions.Actions;

class KeyComboTest {
    @Test
    void selectAll() {
        var driver = new ChromeDriver();
        driver.get("https://example.com");

        new Actions(driver)
            .keyDown(Keys.CONTROL)
            .sendKeys("a")
            .keyUp(Keys.CONTROL)
            .perform();

        driver.quit();
    }
}

Такие действия пригодятся в сложных интерфейсах: дропдауны, кастомные списки, drag‑and‑drop, горячие клавиши.

Рекомендуемые программы

+7 800 100 22 47

бесплатно по РФ

+7 495 085 21 62

бесплатно по Москве

108813 г. Москва, вн.тер.г. поселение Московский,
г. Московский, ул. Солнечная, д. 3А, стр. 1, помещ. 20Б/3
ОГРН 1217300010476
ИНН 7325174845