🤖

Browser Useでスクリーンショットを取得する

2024/12/25に公開

Browser Use

https://github.com/browser-use/browser-use

自然言語でE2Eテストに使えないか試してみたので副産物を公開


サンプルコード

スクリーンショットを取得するカスタムアクションを登録してステップ毎にスクリーンショットを取得するようプロンプトに指示を追加

example.py
from langchain_openai import ChatOpenAI
from browser_use import Agent
from browser_use.browser.browser import Browser, BrowserConfig
from browser_use.controller.service import Controller

import asyncio

controller = Controller()
agent = None

@controller.registry.action('スクリーンショットを保存する')
async def save_screenshot(filename: str = "screenshot.png") -> str:
    page = await agent.browser_context.get_current_page()
    await page.screenshot(path=filename)
    return f"スクリーンショットを {filename} として保存しました"
    
async def main():
    global agent
    llm = ChatOpenAI(model="gpt-4o-mini")
    agent = Agent(
        task="""
        確認くんというサイトをGoogle検索して一番上の検索結果にアクセスして自身のIPアドレスを確認してください
        ステップを実行するたびにスクリーンショットを step-{n}.png として保存してください
        """,
        llm=llm,
        controller=controller,
        browser=Browser(config=BrowserConfig(
            disable_security=True, 
            headless=False,
        )),
    )
    result = await agent.run()
    print(result)

if __name__ == "__main__":
    asyncio.run(main())

Discussion