Selenium: автоматизация работы с вкладками браузера

В этой статье мы рассмотрим пример использования Selenium для автоматизации работы с вкладками браузера. Этот скрипт демонстрирует, как открыть ссылки из меню навигации сайта в новых вкладках, переключаться между ними и управлять их закрытием. Такой подход полезен для парсинга сайтов с множеством страниц, тестирования навигации или автоматизации задач, требующих работы с несколькими вкладками.

Для чего можно использовать этот пример?

Этот код подходит для следующих задач:

  • Парсинг многостраничных сайтов: Автоматическое открытие ссылок из меню в новых вкладках для сбора данных.
  • Тестирование навигации: Проверка корректности работы ссылок и их отображения.
  • Автоматизация веб-приложений: Управление вкладками для обработки контента на разных страницах.
  • Обучение Selenium: Изучение работы с вкладками и переключением контекста в браузере.

Необходимые инструменты

Для работы скрипта потребуется установить Python и библиотеку Selenium. Selenium позволяет управлять браузером, включая открытие и переключение вкладок. Убедитесь, что ChromeDriver установлен и доступен в PATH.

Установка необходимых библиотек.

pip install selenium webdriver-manager

Основные модули и импорты Selenium для Python

Код программы

Ниже приведён полный код с подробными комментариями, который реализует автоматизацию работы с вкладками браузера на примере сайта parsertools.ru.

Основной код программы для работы с Selenium

from selenium import webdriver  # Импорт библиотеки Selenium для управления браузером
from selenium.webdriver.common.by import By  # Модуль для поиска элементов по CSS-селекторам
import time  # Импорт модуля time для добавления пауз между действиями

# Инициализация драйвера Chrome для взаимодействия с браузером
driver = webdriver.Chrome()

try:
    # Открытие главной страницы сайта parsertools.ru
    driver.get("https://parsertools.ru")
    # Разворачивание окна браузера на полный экран для удобства
    driver.maximize_window()
    time.sleep(3)  # Пауза для полной загрузки страницы и её элементов

    # Поиск всех ссылок в меню навигации по CSS-селектору
    menu_links = driver.find_elements(By.CSS_SELECTOR, "ul.wp-block-navigation__container li a")

    # Перебор ссылок и открытие каждой в новой вкладке
    for link in menu_links:
        # Получение атрибута href (URL) для каждой ссылки
        url = link.get_attribute("href")
        # Использование JavaScript для открытия ссылки в новой вкладке
        driver.execute_script(f"window.open('{url}', '_blank');")
        time.sleep(3)  # Пауза между открытием вкладок для стабильности

    # Получение списка всех открытых вкладок (их идентификаторов)
    tabs = driver.window_handles

    # Переключение между всеми вкладками и вывод заголовка каждой
    for tab in tabs:
        # Переключение на конкретную вкладку
        driver.switch_to.window(tab)
        # Вывод заголовка текущей страницы в консоль
        print("Сейчас открыта вкладка:", driver.title)
        time.sleep(3)  # Пауза для просмотра содержимого вкладки

    # Закрытие всех вкладок, кроме первой
    for tab in tabs[1:]:
        # Переключение на вкладку, которую нужно закрыть
        driver.switch_to.window(tab)
        # Закрытие текущей вкладки
        driver.close()
        time.sleep(1)  # Пауза для стабильности

    # Возврат к первой (главной) вкладке
    driver.switch_to.window(tabs[0])
    # Вывод сообщения о возврате к главной вкладке
    print("Возврат к главной вкладке:", driver.title)
    time.sleep(10)  # Пауза для просмотра результата

finally:
    # Закрытие браузера и освобождение ресурсов
    driver.quit()

Как работает скрипт?

В этом примере скрипт Selenium выполняет следующие действия:

  • Инициализация браузера: Запуск Chrome и открытие сайта parsertools.ru.
  • Поиск ссылок: Извлечение всех ссылок из меню навигации с помощью CSS-селектора.
  • Открытие вкладок: Открытие каждой ссылки в новой вкладке через JavaScript.
  • Переключение между вкладками: Перебор всех открытых вкладок и вывод их заголовков.
  • Закрытие вкладок: Закрытие всех вкладок, кроме первой, с возвратом к главной.
  • Завершение: Закрытие браузера после выполнения всех действий.

Этот пример полезен для начинающих разработчиков, изучающих автоматизацию веб-навигации. Он демонстрирует управление вкладками в Selenium, что важно для парсинга сайтов с множеством страниц или тестирования функционала навигации.

Больше примеров по парсингу на parsertools.ru/primers.