搭配 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 主控台中檢視
-
正確關閉瀏覽器並清除資源