microsoft / playwright-python

Python version of the Playwright testing and automation library.
https://playwright.dev/python/
Apache License 2.0
11.47k stars 873 forks source link

[Feature] `__enter__`/`__exit__` on `Browser` #2254

Open jamesbraza opened 7 months ago

jamesbraza commented 7 months ago

I have python-playwright with version 1.41.0, and the below code:

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch()
    ...  # Use browser
    browser.close()

Ideally, one can use a context manager to automate the close() call:

from playwright.sync_api import sync_playwright

with sync_playwright() as p, p.chromium.launch() as browser:
    ...  # Use browser

Thank you for your consideration

jamesbraza commented 7 months ago

One can get pretty close with contextlib.closing:

import contextlib

from playwright.sync_api import sync_playwright

with sync_playwright() as p, contextlib.closing(p.chromium.launch()) as browser:
    ...  # Use browser

However, it would be nice if this was upstreamed to Browser itself