将 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: 适用于亚马逊 Bedrock 的 SDK AgentCore 工具,包括 AgentCore 浏览器 -
playwright: 用于浏览器自动化的 Python 库 -
boto3: 用于创建、配置和管理服务的适用于 Python (Boto3) 的 AWS SDK AWS -
nest-asyncio: 允许在现有的事件循环中运行 asyncio 事件循环
第 2 步:使用 Playwright 控制浏览器
无需代理框架或 LLM 即可直接使用浏览器。当你想对浏览器自动化进行编程控制时,这很有用。Amazon Bedrock AgentCore 提供与 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 控制台中查看
-
正确关闭浏览器并清理资源