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

在Pytest中仅通过Page对象获取Playwright浏览器的executable_path与版本

在Pytest中仅通过Playwright Page对象获取浏览器的executable_path与version属性

在Pytest测试场景中,当仅持有Playwright的Page对象时,想要获取浏览器的executable_path和version属性用于测试报告生成,原先通过垃圾回收器gc.get_referrers结合正则解析的方式不够优雅且依赖内部实现。下面是基于Playwright官方API的稳定解决方案:

优雅实现方案

Playwright的Page对象可以通过层级关联直接获取到Browser实例,进而从BrowserType中拿到所需的浏览器信息,无需依赖垃圾回收或字符串解析:

#!/usr/bin/env python3

""" 获取浏览器版本与可执行路径 """
from playwright.sync_api import Page

class TestClass:
    def test00_pageversion(self, page: Page):
        """ 通过Page对象优雅获取浏览器信息 """
        # 从Page -> Context -> Browser的层级获取浏览器实例
        browser = page.context.browser()
        if not browser:
            print("无法获取浏览器实例(可能为无头模式或特殊运行场景)")
            return
        
        browser_type = browser.browser_type
        # 直接读取官方API提供的属性
        browser_name = browser_type.name
        browser_version = browser_type.version
        browser_executable_path = browser_type.executable_path
        
        print(f"name={browser_name}, version={browser_version} - executable_path={browser_executable_path}")

运行验证

执行测试命令后,输出结果与原方法一致,但实现更稳定:

pytest -s --log-level=INFO .\tests\test_00_browser.py -k test00 --browser=firefox
# 输出:
name=firefox, version=134.0 - executable_path=C:\Users\mobj\AppData\Local\ms-playwright\firefox-1471\firefox\firefox.exe

pytest -s --log-level=INFO .\tests\test_00_browser.py -k test00 --browser-channel=chrome
# 输出:
name=chromium, version=134.0.6998.89 - executable_path=C:\Users\mobj\AppData\Local\ms-playwright\chromium-1155\chrome-win\chrome.exe

方案优势

  • 完全基于Playwright官方公开API,避免依赖内部实现细节,兼容性更强
  • 代码逻辑清晰直观,无需正则解析字符串或操作垃圾回收器
  • 稳定可靠,不会因为Playwright内部结构变更导致功能失效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 21:23:17