You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Playwright Python POM中conftest.py启用Trace遇NameError错误求助

问题解决:NameError: name 'chromium' is not defined 及 Trace 功能配置错误

错误原因分析

  1. chromium未定义:直接调用chromium.launch()但未通过Playwright实例获取浏览器对象,导致NameError。
  2. Fixture逻辑冲突:依赖page fixture的同时手动创建浏览器/上下文,与Playwright默认的资源管理机制冲突。
  3. Trace时机错误:Trace的启动和停止位置不符合要求,无法正确捕获测试过程。

修正方案一:手动管理浏览器资源

替换原conftest.py代码为以下内容:

import pytest
from playwright.sync_api import sync_playwright

@pytest.fixture(scope="function")
def set_up_tear_down():
    with sync_playwright() as p:
        # 通过Playwright实例获取chromium并启动浏览器
        browser = p.chromium.launch(headless=False)
        context = browser.new_context()
        
        # 在创建Page前启动Trace,开启必要的捕获选项
        context.tracing.start(screenshots=True, snapshots=True, sources=True)
        
        page = context.new_page()
        page.set_viewport_size({"width": 1536, "height": 800})
        page.goto("https://google.com")  # 补充完整URL协议
        
        yield page
        
        # 测试执行完成后停止Trace并保存
        context.tracing.stop(path="trace.zip")
        
        # 清理资源
        page.close()
        context.close()
        browser.close()

修正方案二:使用Playwright官方Pytest Fixture(推荐)

利用Playwright自带的page fixture简化代码,自动管理浏览器资源:

import pytest
from playwright.sync_api import Page

@pytest.fixture(scope="function")
def set_up_tear_down(page: Page):
    # 通过当前Page的上下文启动Trace
    page.context.tracing.start(screenshots=True, snapshots=True, sources=True)
    
    page.set_viewport_size({"width": 1536, "height": 800})
    page.goto("https://google.com")
    
    yield page
    
    # 测试结束后停止Trace
    page.context.tracing.stop(path="trace.zip")

关键修改点说明

  • 获取chromium对象:必须通过sync_playwright()实例(如p.chromium)调用浏览器启动方法。
  • Trace时机:tracing.start()需在创建Page前执行,tracing.stop()需在测试完成后(yield之后)执行,确保捕获完整测试流程。
  • 完整URL:导航地址需包含协议(如https://),避免导航失败。
  • 资源管理:手动创建浏览器时需在测试结束后关闭所有资源,使用官方fixture则无需手动清理。

内容的提问来源于stack exchange,提问作者Sarah Tajima

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 05:02:29