

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 将 AgentCore 浏览器与 Playwright 一起
<a name="browser-quickstart-playwright"></a>

您可以将 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 AgentCore 工具的软件开发工具包，包括浏览 AgentCore 器
+  `playwright`: 用于浏览器自动化的 Python 库
+  `boto3`: 用于创建、配置和管理服务的 Python Amazon SDK (Boto3) Amazon 
+  `nest-asyncio`: 允许在现有事件循环中运行 asyncio 事件循环

 **第 2 步：使用 Playwright 控制浏览器 ** 

您可以直接使用浏览器，无需代理框架或 LLM。当你想以编程方式控制浏览器自动化时，这很有用。亚马逊 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 分钟。

两个例子：
+ 使用亚马逊 Bedrock AgentCore 浏览器创建托管浏览器会话
+ 使用 Playwright 的 Chrome DevTools 协议 (CDP) 连接到远程 Chrome 浏览器
+ 导航到 AgentCore 文档并打印页面标题
+ 将会话保持 2 分钟，允许您在 Amazon 控制台中查看
+ 正确关闭浏览器并清理资源