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.
