From 77a15fa9888a3e81a014895a6ec3f1b34c016d06 Mon Sep 17 00:00:00 2001 From: Sean Bearden <72461227+seanbearden@users.noreply.github.com> Date: Mon, 4 Dec 2023 20:48:09 -0800 Subject: [PATCH] Added ability to pass arguments to the Playwright browser (#13146) - **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 --- .../langchain/tools/playwright/utils.py | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/libs/langchain/langchain/tools/playwright/utils.py b/libs/langchain/langchain/tools/playwright/utils.py index eb874f2eb4d656..692288fdde3187 100644 --- a/libs/langchain/langchain/tools/playwright/utils.py +++ b/libs/langchain/langchain/tools/playwright/utils.py @@ -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 @@ -50,12 +50,15 @@ 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. @@ -63,15 +66,18 @@ def create_async_playwright_browser(headless: bool = True) -> AsyncBrowser: 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. @@ -79,7 +85,7 @@ def create_sync_playwright_browser(headless: bool = True) -> SyncBrowser: 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")