💻 Примеры — Selenium WebDriver
⚡ Минимальный рабочий пример
# open_site.py
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://itcareerhub.de/ru")
driver.quit()
Фикстура: @pytest.fixture + yield driver + driver.quit()
Пример 1: Запуск Chrome и переход на сайт (Selenium 4)
Современный способ — Selenium Manager управляет ChromeDriver автоматически.
# subjects/auto-qa/examples/lesson04/01_launch_chrome.py
from selenium import webdriver
driver = webdriver.Chrome() # Selenium Manager сам найдёт драйвер
driver.get("https://itcareerhub.de/ru")
print("Заголовок страницы:", driver.title)
driver.quit()
Пример 2: Навигация — back, forward, refresh
# subjects/auto-qa/examples/lesson04/02_navigation.py
from selenium import webdriver
from time import sleep
driver = webdriver.Chrome()
driver.get("https://itcareerhub.de/ru/")
sleep(2)
driver.get("https://www.berlin.de")
sleep(2)
driver.back() # Возвращаемся на itcareerhub.de/ru
sleep(2)
print("После back:", driver.current_url)
driver.forward() # Снова на berlin.de
sleep(2)
print("После forward:", driver.current_url)
driver.refresh() # Обновить текущую страницу
sleep(2)
driver.quit()
Пример 3: Управление окном и скриншот
# subjects/auto-qa/examples/lesson04/03_window_screenshot.py
from selenium import webdriver
from time import sleep
import os
driver = webdriver.Chrome()
driver.get("https://itcareerhub.de/ru/")
driver.get("https://www.berlin.de/")
driver.set_window_size(640, 460) # Эмулируем мобильное окно
sleep(3)
# Скриншот сохраняется в текущую папку скрипта
driver.save_screenshot("./berlin_screenshot.png")
print("Скриншот сохранён в:", os.getcwd())
driver.maximize_window()
sleep(1)
driver.quit()
Пример 4: Метод click() — клик по ссылке
# subjects/auto-qa/examples/lesson04/04_click.py
from selenium import webdriver
from selenium.webdriver.common.by import By
from time import sleep
driver = webdriver.Chrome()
try:
driver.get("https://itcareerhub.de/ru")
sleep(3) # Ждём загрузки страницы
about_link = driver.find_element(By.LINK_TEXT, "О нас")
about_link.click()
sleep(3)
print("Текущий URL после клика:", driver.current_url)
finally:
driver.quit()
Пример 5: Фикстура pytest для WebDriver
# subjects/auto-qa/examples/lesson04/conftest.py
import pytest
from selenium import webdriver
@pytest.fixture
def driver():
"""Фикстура: создаёт Chrome WebDriver и закрывает его после теста."""
driver = webdriver.Chrome()
driver.maximize_window()
yield driver # Передаём в тест
driver.quit() # Teardown: выполняется после теста в любом случае
# subjects/auto-qa/examples/lesson04/test_basic.py
import pytest
from selenium.webdriver.common.by import By
def test_google_title(driver):
"""Проверяем, что заголовок Google содержит 'Google'."""
driver.get("https://www.google.com")
assert "Google" in driver.title
def test_example_heading(driver):
"""Проверяем заголовок страницы example.com."""
driver.get("https://www.example.com")
heading = driver.find_element(By.TAG_NAME, "h1").text
assert heading == "Example Domain"
# Запуск тестов (PowerShell)
pytest subjects/auto-qa/examples/lesson04/test_basic.py -v
Пример 6: Разбор ДЗ — Firefox, скриншот секции
Источник: разбор домашнего задания из лекции Summary Session 2.
# subjects/auto-qa/examples/lesson04/conftest_firefox.py
import pytest
from selenium import webdriver
@pytest.fixture
def setup_browser():
"""Фикстура для Firefox."""
options = webdriver.FirefoxOptions()
driver = webdriver.Firefox(options=options) # Selenium Manager управляет GeckoDriver
driver.maximize_window()
yield driver
driver.quit()
# subjects/auto-qa/examples/lesson04/test_payment_methods.py
from selenium.webdriver.common.by import By
from time import sleep
def test_payment_methods_section(setup_browser):
driver = setup_browser
# Шаг 1: открыть страницу
driver.get("https://itcareerhub.de/ru")
sleep(3)
# Шаг 2: найти и кликнуть ссылку "Способы оплаты"
payment_link = driver.find_element(By.LINK_TEXT, "Способы оплаты")
payment_link.click()
sleep(3)
# Шаг 3: найти секцию и сделать скриншот элемента
# Обновите By.ID, если ID элемента другой на реальной странице
payment_section = driver.find_element(By.ID, "payment-methods")
payment_section.screenshot("payment_methods_section.png")
print("Скриншот секции сохранён: payment_methods_section.png")
⚠️ Проверить по документации: атрибут
ID секции «Способы оплаты» на itcareerhub.de/ru может отличаться от "payment-methods". Проверьте реальный HTML через DevTools (F12).