Skip to content

Commit

Permalink
Added ability to pass arguments to the Playwright browser (#13146)
Browse files Browse the repository at this point in the history
- **Description:** Enhanced `create_sync_playwright_browser` and
`create_async_playwright_browser` functions to accept a list of
arguments. These arguments are now forwarded to
`browser.chromium.launch()` for customizable browser instantiation.
  - **Issue:** #13143
  - **Dependencies:** None
  - **Tag maintainer:** @eyurtsev,
  - **Twitter handle:** Dr_Bearden

---------

Co-authored-by: Harrison Chase <hw.chase.17@gmail.com>
  • Loading branch information
seanbearden and hwchase17 committed Dec 5, 2023
1 parent dcccf8f commit 77a15fa
Showing 1 changed file with 11 additions and 5 deletions.
16 changes: 11 additions & 5 deletions libs/langchain/langchain/tools/playwright/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
from __future__ import annotations

import asyncio
from typing import TYPE_CHECKING, Any, Coroutine, TypeVar
from typing import TYPE_CHECKING, Any, Coroutine, List, Optional, TypeVar

if TYPE_CHECKING:
from playwright.async_api import Browser as AsyncBrowser
Expand Down Expand Up @@ -50,36 +50,42 @@ def get_current_page(browser: SyncBrowser) -> SyncPage:
return context.pages[-1]


def create_async_playwright_browser(headless: bool = True) -> AsyncBrowser:
def create_async_playwright_browser(
headless: bool = True, args: Optional[List[str]] = None
) -> AsyncBrowser:
"""
Create an async playwright browser.
Args:
headless: Whether to run the browser in headless mode. Defaults to True.
args: arguments to pass to browser.chromium.launch
Returns:
AsyncBrowser: The playwright browser.
"""
from playwright.async_api import async_playwright

browser = run_async(async_playwright().start())
return run_async(browser.chromium.launch(headless=headless))
return run_async(browser.chromium.launch(headless=headless, args=args))


def create_sync_playwright_browser(headless: bool = True) -> SyncBrowser:
def create_sync_playwright_browser(
headless: bool = True, args: Optional[List[str]] = None
) -> SyncBrowser:
"""
Create a playwright browser.
Args:
headless: Whether to run the browser in headless mode. Defaults to True.
args: arguments to pass to browser.chromium.launch
Returns:
SyncBrowser: The playwright browser.
"""
from playwright.sync_api import sync_playwright

browser = sync_playwright().start()
return browser.chromium.launch(headless=headless)
return browser.chromium.launch(headless=headless, args=args)


T = TypeVar("T")
Expand Down

0 comments on commit 77a15fa

Please sign in to comment.