Java: Selenium

Теория: Первый тест

После настройки окружения можно написать первый тест и проверить, что Selenium управляет браузером. Начинаем с создания драйвера и открытия страницы, затем выполняем действие и проверяем результат.

Создаем и запускаем WebDriver

В Java основной класс для работы с браузером — это WebDriver. Он управляет окном браузера, отправляет команды и возвращает результаты. Для запуска Chrome используется реализация ChromeDriver:

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

class DriverTest {
    @Test
    void createDriver() {
        var driver = new ChromeDriver();
        driver.quit();
    }
}

Selenium сам находит и настраивает драйвер браузера, если он доступен в системе. После запуска можно открыть страницу:

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

class OpenPageTest {
    @Test
    void openPage() {
        var driver = new ChromeDriver();
        driver.get("https://example.com");
        driver.quit();
    }
}

Метод get() загружает страницу и ждет, пока документ будет готов для взаимодействия.

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

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

class QuitTest {
    @Test
    void quitDriver() {
        var driver = new ChromeDriver();
        driver.quit();
    }
}

Полный минимальный пример:

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

class MinimalTest {
    @Test
    void openAndQuit() {
        var driver = new ChromeDriver();
        driver.get("https://example.com");
        driver.quit();
    }
}

Если браузер открылся, загрузил страницу и закрылся без ошибок, значит связка Selenium и драйвера настроена правильно.

Поиск элемента и клик

После открытия страницы можно взаимодействовать с элементами интерфейса. Для поиска элементов используется класс By:

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;

class ClickTest {
    @Test
    void clickButton() {
        var driver = new ChromeDriver();
        driver.get("https://www.w3schools.com/html/html_forms.asp");

        var button = driver.findElement(By.tagName("button"));
        button.click();

        driver.quit();
    }
}

Метод findElement() ищет первый подходящий элемент по заданному признаку. В реальных тестах чаще используются более точные локаторы:

  • By.id("login-button")
  • By.name("username")
  • By.className("btn-primary")
  • By.cssSelector(".form .submit")
  • By.xpath("//button[text()='Login']")

После того как элемент найден, над ним можно выполнять действия:

  • click() — клик мышью
  • sendKeys("text") — ввод текста
  • clear() — очистка поля

Пример сценария логина:

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;

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

        var username = driver.findElement(By.name("username"));
        var password = driver.findElement(By.name("password"));
        var loginButton = driver.findElement(By.id("submit"));

        username.sendKeys("tester");
        password.sendKeys("12345");
        loginButton.click();

        driver.quit();
    }
}

Проверка результата с помощью assert

После действий нужно проверить результат. В Java‑тестах чаще всего используют утверждения из JUnit. Для проверки заголовка страницы подойдет assertTrue:

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

import static org.junit.jupiter.api.Assertions.assertTrue;

class FirstTest {
    @Test
    void openPage() {
        var driver = new ChromeDriver();
        driver.get("https://example.com");
        assertTrue(driver.getTitle().contains("Example"));
        driver.quit();
    }
}

Проверять можно и другие значения, например URL или текст элемента:

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

import static org.junit.jupiter.api.Assertions.assertEquals;

class FirstTest {
    @Test
    void checkHeading() {
        var driver = new ChromeDriver();
        driver.get("https://example.com");
        var heading = driver.findElement(By.tagName("h1")).getText();
        assertEquals("Example Domain", heading);
        driver.quit();
    }
}

Если утверждение не выполняется, тест завершается ошибкой. Так мы фиксируем, что страница не соответствует ожиданиям.

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

+7 800 100 22 47

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

+7 495 085 21 62

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

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