PythonUI自动化用PyTest-Selenium吗

wen python案例 27

本文目录导读:

PythonUI自动化用PyTest-Selenium吗

  1. 推荐方案对比
  2. 更推荐的方案
  3. 实际项目建议

Python UI 自动化不一定要用 pytest-selenium,现在更主流的选择是 pytest + Seleniumpytest + 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,开发效率和稳定性都更好。

抱歉,评论功能暂时关闭!