Вспомните типы навигационных команд Selenium.qa-60

1. Базовые команды навигации

Переход по URL

driver.get("https://example.com");
// или
driver.navigate().to("https://example.com");

Разница:

  • get() сразу ожидает загрузки страницы
  • navigate().to() более гибкий (часто вызывает get() внутри)

Обновление страницы

driver.navigate().refresh();

Применение: После действий, которые не обновляют страницу автоматически

Навигация в истории браузера

driver.navigate().back(); // Назад
driver.navigate().forward(); // Вперед

Пример сценария:

driver.get("https://page1.com");
driver.get("https://page2.com");
driver.navigate().back(); // Вернет на page1
driver.navigate().forward(); // Снова на page2

2. Управление окнами и вкладками

Получение текущего URL

String currentUrl = driver.getCurrentUrl();

Получение заголовка страницы

String pageTitle = driver.getTitle();

Управление размерами окна

driver.manage().window().maximize(); // Максимизировать
driver.manage().window().minimize(); // Минимизировать
driver.manage().window().fullscreen(); // Полный экран

Получение и установка размеров окна

Dimension size = driver.manage().window().getSize();
driver.manage().window().setSize(new Dimension(1024, 768));

3. Работа с фреймами и окнами

Переключение между фреймами

// По индексу
driver.switchTo().frame(0);

// По имени/ID
driver.switchTo().frame("frameName");

// По элементу
WebElement frame = driver.findElement(By.tagName("iframe"));
driver.switchTo().frame(frame);

Возврат к основному контенту

driver.switchTo().defaultContent();

Переключение между окнами/вкладками

// Получение всех дескрипторов окон
Set<String> handles = driver.getWindowHandles();

// Переключение на новое окно
for (String handle : handles) {
    if (!handle.equals(currentHandle)) {
        driver.switchTo().window(handle);
        break;
    }
}

4. Специальные навигационные команды

Управление куками

// Добавление куки
driver.manage().addCookie(new Cookie("name", "value"));

// Получение куки
Cookie cookie = driver.manage().getCookieNamed("cookieName");

// Удаление куки
driver.manage().deleteCookieNamed("cookieName");

Управление временными ожиданиями

// Неявное ожидание
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

// Ожидание загрузки страницы
driver.manage().timeouts().pageLoadTimeout(30, TimeUnit.SECONDS);

// Ожидание выполнения скрипта
driver.manage().timeouts().setScriptTimeout(5, TimeUnit.SECONDS);

5. Навигация с JavaScript

Выполнение навигации через JS

JavascriptExecutor js = (JavascriptExecutor)driver;
js.executeScript("window.location.href = 'https://example.com';");

Изменение истории браузера через JS

js.executeScript("window.history.go(-1);"); // Назад
js.executeScript("window.history.forward();"); // Вперед

Резюмируем

  1. Базовые команды:

    • get(), navigate().to() - открытие страниц
    • refresh() - обновление
    • back(), forward() - история браузера
  2. Управление окнами:

    • maximize(), minimize(), fullscreen()
    • Работа с размерами окна
  3. Фреймы и окна:

    • switchTo().frame()
    • switchTo().window()
    • getWindowHandles()
  4. Специальные команды:

    • Управление куками
    • Настройка ожиданий
    • JavaScript навигация

Профессиональный совет: Для надежной навигации всегда комбинируйте команды Selenium с явными ожиданиями (WebDriverWait), чтобы избежать проблем с динамически загружаемыми элементами.