View a markdown version of this page

搭配 Playwright 使用 AgentCore 瀏覽器 - Amazon Bedrock AgentCore

搭配 Playwright 使用 AgentCore 瀏覽器

您可以搭配瀏覽器工具使用 Playwright 自動化架構:

步驟 1:安裝相依性

建立專案資料夾 (如果您之前沒有建立) 並安裝必要的套件:

mkdir agentcore-browser-quickstart cd agentcore-browser-quickstart python3 -m venv .venv source .venv/bin/activate
注意

在 Windows 上,使用: .venv\Scripts\activate

安裝必要的套件:

pip install bedrock-agentcore playwright boto3 nest-asyncio

這些套件提供:

  • bedrock-agentcore :適用於 Amazon Bedrock AgentCore 工具的 SDK,包括 AgentCore 瀏覽器

  • playwright :適用於瀏覽器自動化的 Python 程式庫

  • boto3 : AWS SDK for Python (Boto3) 以建立、設定和管理 AWS 服務

  • nest-asyncio :允許在現有事件迴圈中執行非同步事件迴圈

步驟 2:使用 Playwright 控制瀏覽器

您可以直接使用瀏覽器,無需代理程式架構或 LLM。當您想要以程式設計方式控制瀏覽器自動化時,這會很有用。Amazon Bedrock AgentCore 提供與 Playwright 的整合,以進行瀏覽器自動化。

非同步 Playwright 範例

建立名為 的檔案direct_browser_playwright.py,並新增下列程式碼:

from playwright.async_api import async_playwright, Playwright, BrowserType from bedrock_agentcore.tools.browser_client import browser_session import asyncio async def run(playwright: Playwright): # Create and maintain a browser session with browser_session('us-west-2') as client: # Get WebSocket URL and authentication headers ws_url, headers = client.generate_ws_headers() # Connect to the remote browser chromium: BrowserType = playwright.chromium browser = await chromium.connect_over_cdp( ws_url, headers=headers ) # Get the browser context and page context = browser.contexts[0] page = context.pages[0] try: # Navigate to a website await page.goto("https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/what-is-bedrock-agentcore.html") # Print the page title title = await page.title() print(f"Page title: {title}") # Keep the session alive for 2 minutes to allow viewing print("\n\nBrowser session is active. Check the AWS Console for live view.") await asyncio.sleep(120) finally: # Clean up resources await page.close() await browser.close() async def main(): async with async_playwright() as playwright: await run(playwright) # Run the async function if __name__ == "__main__": asyncio.run(main())

同步 Playwright 範例與即時檢視

或者,您可以使用同步 API 搭配整合式即時檢視伺服器:

from playwright.sync_api import sync_playwright, Playwright, BrowserType from bedrock_agentcore.tools.browser_client import browser_session from browser_viewer import BrowserViewerServer import time def run(playwright: Playwright): # Create the browser session and keep it alive with browser_session('us-west-2') as client: ws_url, headers = client.generate_ws_headers() # Start viewer server viewer = BrowserViewerServer(client, port=8005) viewer_url = viewer.start(open_browser=True) # Connect using headers chromium: BrowserType = playwright.chromium browser = chromium.connect_over_cdp( ws_url, headers=headers ) context = browser.contexts[0] page = context.pages[0] try: page.goto("https://amazon.com/") print(page.title()) time.sleep(120) finally: page.close() browser.close() with sync_playwright() as playwright: run(playwright)

執行指令碼

執行任一指令碼:

python direct_browser_playwright.py

預期的輸出

您應該會看到列印的頁面標題 Page title: What is Amazon Bedrock AgentCore? - Amazon Bedrock AgentCore (例如,)。指令碼會在關閉之前讓瀏覽器工作階段保持作用中 2 分鐘。

兩個範例:

  • 使用 Amazon Bedrock AgentCore 瀏覽器建立受管瀏覽器工作階段

  • 使用 Playwright 的 Chrome DevTools 通訊協定 (CDP) 連線至遠端 Chrome 瀏覽器

  • 導覽至 AgentCore 文件並列印頁面標題

  • 保持工作階段運作 2 分鐘,讓您可以在 AWS 主控台中檢視

  • 正確關閉瀏覽器並清除資源