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

Playwright Inspector无法随测试启动及无头模式异常问题咨询

Python Playwright:PWDEBUG=1 无法启动Inspector、headless=True仍显示浏览器UI的问题

环境信息

  • Python 3.9.6
  • Playwright 1.50.0
  • macOS

问题描述

  1. 执行调试命令 PWDEBUG=1 pytest -s test_play.py 时,测试能在浏览器窗口运行,但Playwright Inspector未自动启动;仅在代码中添加 page.pause() 时,Inspector才会打开。
  2. 代码中设置 headless=True 启动浏览器,但浏览器UI仍会弹出。

相关代码

@pytest.fixture(scope="function")
def page():
    with sync_playwright() as p:
        browser = p.chromium.launch(headless=True)
        page = browser.new_page()

        page.goto('https://www.example.com/', wait_until="domcontentloaded")
        yield page

        page.close()
        browser.close()

def test_run_sample(page: Page):
    print('RUNNING TEST')
    page.pause()

解决方案

问题1:PWDEBUG=1 无法触发Inspector

原因是自定义了page fixture,未使用Playwright官方提供的pytest fixture。官方的pytest-playwright插件会自动处理PWDEBUG环境变量,手动创建browser/page实例时,该变量不会被识别。

可选解决方法:

  1. 改用官方pytest fixture
    删除自定义的page fixture,直接使用插件提供的page参数:

    def test_run_sample(page: Page):
        print('RUNNING TEST')
        # 无需手动添加page.pause(),PWDEBUG=1会自动启动Inspector
    

    执行PWDEBUG=1 pytest -s test_play.py即可自动唤起Inspector。

  2. 在自定义fixture中手动处理PWDEBUG
    若需保留自定义fixture,可通过环境变量判断是否启动调试:

    import os
    @pytest.fixture(scope="function")
    def page():
        with sync_playwright() as p:
            browser = p.chromium.launch(headless=True)
            page = browser.new_page()
            page.goto('https://www.example.com/', wait_until="domcontentloaded")
            # 检测PWDEBUG环境变量,启用时启动Inspector
            if os.getenv("PWDEBUG") == "1":
                page.pause()
            yield page
            page.close()
            browser.close()
    

问题2:headless=True 仍显示浏览器UI

核心原因:

  • 开启PWDEBUG=1调试模式时,Playwright会强制覆盖headless参数为False,这是调试模式的默认行为,确保能看到浏览器窗口。
  • 非调试模式下出现该问题,可能是参数兼容性或覆盖问题。

解决方法:

  1. 调试模式下的预期行为
    调试时浏览器UI会自动打开,无需修改,调试完成后关闭PWDEBUG环境变量即可恢复无头模式。

  2. 非调试模式下的修复

    • 尝试使用Playwright 1.39+引入的新无头模式参数:
      browser = p.chromium.launch(headless="new")
      
    • 检查是否有其他代码/环境变量覆盖了headless设置,比如是否存在PWDEBUG、PLAYWRIGHT_HEADLESS等环境变量。

内容的提问来源于stack exchange,提问作者Testing Singh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 12:17:36