mirror of
https://github.com/microsoft/playwright.git
synced 2025-06-26 21:40:17 +00:00
85 lines
2.2 KiB
Markdown
85 lines
2.2 KiB
Markdown
---
|
|
id: chrome-extensions
|
|
title: "Chrome Extensions"
|
|
---
|
|
|
|
:::note
|
|
Extensions only work in Chrome / Chromium in non-headless mode, launched with a persistent context.
|
|
:::
|
|
|
|
The following is code for getting a handle to the [background page](https://developer.chrome.com/extensions/background_pages) of an extension whose source is located in `./my-extension`:
|
|
|
|
```js
|
|
const { chromium } = require('playwright');
|
|
|
|
(async () => {
|
|
const pathToExtension = require('path').join(__dirname, 'my-extension');
|
|
const userDataDir = '/tmp/test-user-data-dir';
|
|
const browserContext = await chromium.launchPersistentContext(userDataDir,{
|
|
headless: false,
|
|
args: [
|
|
`--disable-extensions-except=${pathToExtension}`,
|
|
`--load-extension=${pathToExtension}`
|
|
]
|
|
});
|
|
const backgroundPage = browserContext.backgroundPages()[0];
|
|
// Test the background page as you would any other page.
|
|
await browserContext.close();
|
|
})();
|
|
```
|
|
|
|
```python async
|
|
import asyncio
|
|
from playwright.async_api import async_playwright
|
|
|
|
path_to_extension = "./my-extension"
|
|
user_data_dir = "/tmp/test-user-data-dir"
|
|
|
|
|
|
async def run(playwright):
|
|
context = await playwright.chromium.launch_persistent_context(
|
|
user_data_dir,
|
|
headless=False,
|
|
args=[
|
|
f"--disable-extensions-except={path_to_extension}",
|
|
f"--load-extension={path_to_extension}",
|
|
],
|
|
)
|
|
background_page = context.background_pages[0]
|
|
# Test the background page as you would any other page.
|
|
await context.close()
|
|
|
|
|
|
async def main():
|
|
async with async_playwright() as playwright:
|
|
await run(playwright)
|
|
|
|
|
|
asyncio.run(main())
|
|
```
|
|
|
|
```python sync
|
|
from playwright.sync_api import sync_playwright
|
|
|
|
path_to_extension = "./my-extension"
|
|
user_data_dir = "/tmp/test-user-data-dir"
|
|
|
|
|
|
def run(playwright):
|
|
context = playwright.chromium.launch_persistent_context(
|
|
user_data_dir,
|
|
headless=False,
|
|
args=[
|
|
f"--disable-extensions-except={path_to_extension}",
|
|
f"--load-extension={path_to_extension}",
|
|
],
|
|
)
|
|
background_page = context.background_pages[0]
|
|
# Test the background page as you would any other page.
|
|
context.close()
|
|
|
|
|
|
with sync_playwright() as playwright:
|
|
run(playwright)
|
|
```
|