本文目录导读:

Python UI 自动化不一定要用 pytest-selenium,现在更主流的选择是 pytest + Selenium 或 pytest + Playwright。
推荐方案对比
pytest + Selenium(最主流)
# 直接使用 pytest + selenium,不安装 pytest-selenium
import pytest
from selenium import webdriver
class TestLogin:
def setup_method(self):
self.driver = webdriver.Chrome()
def teardown_method(self):
self.driver.quit()
def test_login_success(self):
self.driver.get("https://example.com/login")
# 测试逻辑...
优点:
- 灵活可控,不依赖框架绑定
- 可以自由选择 fixture 管理
pytest-selenium(已较少使用)
pip install pytest-selenium
# 使用 pytest-selenium 提供的 fixture
def test_example(selenium):
selenium.get("https://example.com")
assert selenium.title == "Example"
缺点:
- 项目已不活跃,更新缓慢
- 功能有限,不如直接使用 pytest fixture 灵活
- 对 Selenium 4 支持不完善
更推荐的方案
方案 A:pytest + Selenium(自定义 fixture)
# conftest.py
import pytest
from selenium import webdriver
@pytest.fixture
def driver():
driver = webdriver.Chrome()
driver.maximize_window()
yield driver
driver.quit()
# test_demo.py
def test_search(driver):
driver.get("https://www.baidu.com")
driver.find_element_by_id("kw").send_keys("pytest")
方案 B:pytest + Playwright(推荐新项目使用)
# 更现代、更快、更稳定
import pytest
from playwright.sync_api import Page
def test_example(page: Page):
page.goto("https://example.com")
assert page.title() == "Example"
实际项目建议
对于老项目/团队习惯 Selenium:
# 安装 pip install pytest selenium webdriver-manager
# 使用 webdriver-manager 自动管理驱动
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.service import Service
@pytest.fixture
def driver():
service = Service(ChromeDriverManager().install())
driver = webdriver.Chrome(service=service)
yield driver
driver.quit()
对于新项目:
强烈推荐 Playwright:
- 速度更快(异步非阻塞)
- 自动等待元素
- 更好的截图/视频录制
- 跨浏览器支持更好
pip install pytest-playwright playwright install
| 方案 | 推荐度 | 说明 |
|---|---|---|
| pytest-selenium | ❌ 不推荐 | 过时,维护不活跃 |
| pytest + Selenium | 适合老项目,需要自己封装 | |
| pytest + Playwright | 新项目首选,更现代更稳定 |
我的建议:除非团队已有大量 Selenium 代码,否则新项目直接选择 pytest + Playwright,开发效率和稳定性都更好。