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: AgentCore 브라우저를 포함한 Amazon Bedrock AgentCore용 SDK 도구 -
playwright: 브라우저 자동화를 위한 Python 라이브러리 -
boto3AWS 서비스를 생성, 구성 및 관리하기 위한 Python(Boto3)용 : AWS SDK -
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 콘솔에서 볼 수 있습니다.
-
브라우저를 올바르게 닫고 리소스를 정리합니다.