Java: Selenium

Теория: Работа с окнами и фреймами

Современные сайты используют всплывающие окна, вкладки и фреймы. Для работы с ними нужно переключать контекст WebDriver. В этом уроке разберем алерты, окна и iframe.

Алерты

Для работы с алертами используется switchTo().alert():

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

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

        var alert = driver.switchTo().alert();
        var text = alert.getText();
        alert.accept();

        driver.quit();
    }
}

Также доступны dismiss() и sendKeys() для prompt‑окон.

Окна и вкладки

Каждое окно имеет свой идентификатор. После открытия новой вкладки нужно переключиться:

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

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

        var original = driver.getWindowHandle();

        // действие, которое открывает новую вкладку

        for (var handle : driver.getWindowHandles()) {
            if (!handle.equals(original)) {
                driver.switchTo().window(handle);
                break;
            }
        }

        driver.switchTo().window(original);
        driver.quit();
    }
}

После работы с вкладкой можно вернуться к исходной через switchTo().window(original).

Работа с iframe

Элементы внутри iframe доступны только после переключения контекста:

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

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

        driver.switchTo().frame("frame-id");
        // действия внутри фрейма
        driver.switchTo().defaultContent();

        driver.quit();
    }
}

Переключение обратно через defaultContent() возвращает управление основному документу.

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

+7 800 100 22 47

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

+7 495 085 21 62

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

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