How can I get the playwright browser objects executable_path
and version
in pytest where I only have a Page object?
I can get it from the garbage collector referrers list but it is ugly. (I need it for my test reports)
#!/usr/bin/env python3
""" browser version and executable path """
import gc, os, re
from playwright.sync_api import Page
class TestClass:
def test00_pageversion(self, page: Page):
""" browser version and executable path """
b = gc.get_referrers(page)
mybrowser = None
for i in b:
if re.search(r'BrowserType', str(i)):
#log.info(f" found:{i}")
mybrowser = str(i)
break
if mybrowser:
browser_executable_path = re.search(r'executable_path=([^>]+)>', mybrowser).group(1)
browser_version = re.search(r'version=([\d\.]+)>', mybrowser).group(1)
browser_name = re.search(r'BrowserType name=([^\s]+)', mybrowser).group(1)
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
You can access the Browser
object from the page's context:
from playwright.sync_api import Page
def test00_pageversion(page: Page) -> None:
browser = page.context.browser
version = browser.version
name = browser.browser_type.name
executable_path = browser.browser_type.executable_path