⚠️ This is the originalplaywright-pythonpatched withrebrowser-patches.🕵️ The ultimate goal is to pass all automation detection tests presented in
rebrowser-bot-detector.🪄 It's designed to be a drop-in replacement for the original
playwrightwithout changing your codebase. Each major and minor version of this repo matches the original repo, patch version could differ due to changes related to the patch itself.☝️ Make sure to read: Patches for Puppeteer and Playwright
🐛 Please report any issues in the
rebrowser-patchesrepo.
🎭 Playwright for Python

Playwright is a Python library to automate Chromium, Firefox and WebKit browsers with a single API. Playwright delivers automation that is ever-green, capable, reliable and fast. See how Playwright is better.
| Linux | macOS | Windows | |
|---|---|---|---|
| Chromium 131.0.6778.33 | ✅ | ✅ | ✅ |
| WebKit 18.2 | ✅ | ✅ | ✅ |
| Firefox 132.0 | ✅ | ✅ | ✅ |
https://playwright.dev/python/docs/intro
https://playwright.dev/python/docs/api/class-playwright
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
for browser_type in [p.chromium, p.firefox, p.webkit]:
browser = browser_type.launch()
page = browser.new_page()
page.goto('http://playwright.dev')
page.screenshot(path=f'example-{browser_type.name}.png')
browser.close()import asyncio
from playwright.async_api import async_playwright
async def main():
async with async_playwright() as p:
for browser_type in [p.chromium, p.firefox, p.webkit]:
browser = await browser_type.launch()
page = await browser.new_page()
await page.goto('http://playwright.dev')
await page.screenshot(path=f'example-{browser_type.name}.png')
await browser.close()
asyncio.run(main())More comfortable in another programming language? Playwright is also available in