2021-06-10 07:48:16 -07:00
---
2021-06-10 13:43:42 -07:00
id: chrome-extensions
title: "Chrome Extensions"
2021-06-10 07:48:16 -07:00
---
:::note
2022-04-22 13:44:18 +02:00
Extensions only work in Chrome / Chromium in non-headless mode, launched with a persistent context.
2021-06-10 07:48:16 -07:00
:::
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();
})();
```
2021-06-28 21:26:04 +02:00
```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
2021-07-14 19:01:46 +02:00
from playwright.sync_api import sync_playwright
2021-06-28 21:26:04 +02:00
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)
```