Selenium.webdriver.Chrome: примеры (PYTHON)

Использование selenium.webdriver.Chrome для управления браузером
Раздел: Веб-автоматизация, Браузер
selenium.webdriver.Chrome(executable_path: str='chromedriver', port: int=0, options: selenium.webdriver.ChromeOptions=None, service_args: list=None, desired_capabilities: dict=None, service_log_path: str=None, chrome_options: selenium.webdriver.ChromeOptions=None, keep_alive: bool): selenium.webdriver.Chrome

Основные сведения о функции selenium.webdriver.Chrome

Функция selenium.webdriver.Chrome является конструктором класса Chrome из модуля selenium.webdriver. Она предназначена для создания экземпляра веб-драйвера, который управляет браузером Google Chrome в автоматизированном режиме. Использование этой функции позволяет выполнять тестирование веб-приложений, парсинг данных или автоматизацию рутинных действий в браузере.

Функция принимает несколько необязательных аргументов для настройки сессии браузера:

  • options - экземпляр класса ChromeOptions, который позволяет задавать параметры запуска Chrome (например, режим инкогнито, размер окна, аргументы командной строки).
  • service - экземпляр класса ChromeService, отвечающий за запуск и управление процессом драйвера ChromeDriver.
  • keep_alive - булево значение (по умолчанию True), определяющее использование механизма keep-alive для HTTP-соединений между скриптом и ChromeDriver.
  • desired_capabilities - словарь с возможностями браузера (устаревший параметр, в Selenium 4 рекомендуется использовать options).

Возвращаемое значение - объект webdriver.Chrome, который представляет сессию браузера и предоставляет методы для взаимодействия с веб-страницами (например, get(), find_element(), execute_script()).

Простые примеры использования

Базовый запуск браузера с настройками по умолчанию:

from selenium import webdriver

driver = webdriver.Chrome()
driver.get('https://www.python.org')
print(driver.title)
driver.quit()
Welcome to Python.org

Запуск с заданием пути к исполняемому файлу ChromeDriver через объект Service:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service

service = Service(executable_path='/путь/к/chromedriver')
driver = webdriver.Chrome(service=service)
driver.get('https://example.com')
driver.quit()
# Браузер открывает страницу example.com

Использование объекта ChromeOptions для запуска в режиме инкогнито:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

options = Options()
options.add_argument('--incognito')
driver = webdriver.Chrome(options=options)
driver.get('https://example.com')
driver.quit()
# Браузер запускается в режиме инкогнито

Альтернативные функции в Python

В библиотеке Selenium для Python существуют аналогичные конструкторы для других браузеров:

  • webdriver.Firefox - для управления браузером Mozilla Firefox через драйвер geckodriver. Используется при тестировании кросс-браузерной совместимости.
  • webdriver.Edge - для работы с Microsoft Edge через драйвер msedgedriver. Применяется в экосистеме Windows.
  • webdriver.Safari - для автоматизации Safari на macOS. Требует включенной опции 'Allow Remote Automation' в меню разработчика.

Выбор конкретного драйвера зависит от целевого браузера и операционной системы. Chrome часто выбирают из-за его распространенности и стабильности работы с Selenium.

Аналоги функции в других языках программирования

В PHP используется пакет facebook/webdriver:

use Facebook\WebDriver\Remote\RemoteWebDriver;
use Facebook\WebDriver\WebDriverCapabilities;

$host = 'http://localhost:4444/wd/hub';
$capabilities = DesiredCapabilities::chrome();
$driver = RemoteWebDriver::create($host, $capabilities);

В JavaScript (Node.js) применяется библиотека selenium-webdriver:

const {Builder} = require('selenium-webdriver');
let driver = await new Builder().forBrowser('chrome').build();

В Java используется класс ChromeDriver из org.openqa.selenium.chrome:

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

WebDriver driver = new ChromeDriver();

Основное отличие Python-версии - более лаконичный синтаксис и динамическая типизация, что ускоряет написание скриптов.

Типичные ошибки при использовании

Наиболее распространенная ошибка - отсутствие исполняемого файла ChromeDriver в PATH:

from selenium import webdriver

driver = webdriver.Chrome()
selenium.common.exceptions.WebDriverException: Message: 'chromedriver' executable needs to be in PATH.

Решение - указать путь явно через аргумент service:

from selenium.webdriver.chrome.service import Service

service = Service('/правильный/путь/chromedriver')
driver = webdriver.Chrome(service=service)

Другая частая ошибка - несовместимость версий Chrome и ChromeDriver:

# При запуске с устаревшим ChromeDriver
SessionNotCreatedException: This version of ChromeDriver only supports Chrome version XXX

Необходимо обновить ChromeDriver до версии, соответствующей установленному браузеру.

Изменения в последних версиях Selenium

В Selenium 4 произошли значительные изменения в работе с драйверами:

  • Аргумент executable_path устарел. Вместо него рекомендуется использовать объект Service.
  • Класс ChromeOptions получил новые методы, например add_experimental_option() для передачи сложных настроек.
  • Упрощена работа с DevTools Protocol через driver.get_cdp() методы.
  • Добавлена поддержка управляемых драйверов через Selenium Manager (бета-функция).

Пример нового синтаксиса в Selenium 4:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options

options = Options()
options.add_argument('--headless')
service = Service()
driver = webdriver.Chrome(service=service, options=options)

Расширенные примеры использования

Запуск Chrome в headless-режиме (без графического интерфейса):

Пример python
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

options = Options()
options.add_argument('--headless')
options.add_argument('--disable-gpu')
driver = webdriver.Chrome(options=options)
driver.get('https://example.com')
print('Заголовок страницы:', driver.title)
driver.quit()
Заголовок страницы: Example Domain

Использование пользовательского профиля Chrome:

Пример python
options = Options()
options.add_argument('user-data-dir=/путь/к/профилю')
driver = webdriver.Chrome(options=options)
# Браузер откроется с уже сохраненными куками и настройками

Настройка прокси-сервера:

Пример python
options = Options()
options.add_argument('--proxy-server=http://proxy.example.com:8080')
driver = webdriver.Chrome(options=options)

Отключение WebDriver метки для избежания обнаружения:

Пример python
options = Options()
options.add_experimental_option('excludeSwitches', ['enable-automation'])
options.add_experimental_option('useAutomationExtension', False)
driver = webdriver.Chrome(options=options)

Параллельный запуск нескольких экземпляров браузера:

Пример python
from threading import Thread

def create_driver():
    driver = webdriver.Chrome()
    driver.get('https://example.com')
    return driver

# Запуск в двух потоках
drivers = [Thread(target=create_driver) for _ in range(2)]
for thread in drivers:
    thread.start()

питон selenium.webdriver.Chrome function comments

En
Selenium.webdriver.Chrome Launch Chrome browser