Python

Selenium Python: первый скрипт для браузера

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

Selenium нужен, когда важен настоящий браузер и поведение страницы. Если нужно просто скачать HTML по адресу, часто достаточно requests

Установка

pip install selenium

В современных версиях Selenium драйвер для Chrome часто подтягивается автоматически через Selenium Manager, если Chrome установлен в системе. Если запуск не сработал, проверьте версию Chrome и сообщение об ошибке в терминале

Минимальный скрипт

from selenium import webdriver

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

print(driver.title)

driver.quit()

Скрипт откроет Chrome, перейдет на example.com, выведет title страницы и закроет браузер

Если браузер открылся и сразу закрылся, это нормально: скрипт дошел до driver.quit()

Безопасное закрытие через try/finally

Если в середине кода случится ошибка, браузер может остаться открытым. Поэтому лучше использовать try/finally

from selenium import webdriver

driver = webdriver.Chrome()

try:
    driver.get('https://example.com')
    print(driver.title)
finally:
    driver.quit()

finally выполнится даже при ошибке. Это хороший шаблон для первых Selenium-скриптов

Найти элемент через By

from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()

try:
    driver.get('https://example.com')
    heading = driver.find_element(By.TAG_NAME, 'h1')
    print(heading.text)
finally:
    driver.quit()

By.TAG_NAME ищет элемент по имени тега. В реальных страницах чаще используют By.CSS_SELECTOR, By.ID, By.NAME

Пример CSS selector:

element = driver.find_element(By.CSS_SELECTOR, 'h1')

По этой теме полезно отдельно посмотреть Составьте еженедельное расписание занятий, чтобы расширить контекст и сравнить подходы

По этой теме полезно отдельно посмотреть Аннотации типов для декораторов в Python, чтобы расширить контекст и сравнить подходы

Ожидание элемента

Страницы часто загружаются не сразу. Если искать элемент слишком рано, Selenium может не найти его. Для этого используют WebDriverWait

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Chrome()
wait = WebDriverWait(driver, 10)

try:
    driver.get('https://example.com')
    heading = wait.until(
        EC.presence_of_element_located((By.CSS_SELECTOR, 'h1'))
    )
    print(heading.text)
finally:
    driver.quit()

Такой вариант надежнее, чем сразу вызывать find_element() на динамической странице

Нажать кнопку

На учебной странице кнопки может не быть, но общий шаблон такой

button = wait.until(
    EC.element_to_be_clickable((By.CSS_SELECTOR, 'button.submit'))
)
button.click()

Для клика лучше ждать element_to_be_clickable, а не только наличие элемента на странице. Элемент может существовать в DOM, но быть скрытым или заблокированным

Заполнить поле

field = wait.until(
    EC.presence_of_element_located((By.NAME, 'q'))
)
field.send_keys('python selenium')

Если нужно очистить поле перед вводом:

field.clear()
field.send_keys('python selenium')

Частые ошибки

Не закрывать браузер через driver.quit()

Искать элемент до того, как он появился

Использовать хрупкий selector, который ломается после изменения верстки

Путать find_element() и find_elements()

Пытаться решить через Selenium задачу, которая проще делается через HTTP-запрос

Запускать скрипт на сервере без браузера или графической среды без настройки headless-режима

Практические задачи

Откройте https://example.com и выведите title

Найдите h1 и выведите текст

Перепишите пример через try/finally

Добавьте WebDriverWait

Попробуйте найти несуществующий selector и посмотрите ошибку

Найдите кнопку на своей тестовой странице и нажмите ее через Selenium

Первый Selenium-скрипт на Python состоит из нескольких шагов: создать webdriver.Chrome(), открыть страницу через get(), найти элемент через By, при необходимости дождаться его через WebDriverWait, выполнить действие и закрыть браузер через quit()

Для реальных страниц почти всегда добавляйте ожидания. Это снижает случайные ошибки, когда элемент просто не успел появиться

Подписаться
Уведомить о
guest
0 комментариев
Старые
Новые Популярные

Настройки cookie

0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x