browser_use は、中で Playwright を使っている。
Playwright は Selenium Remote ( Selenium Grid ) が使えるため、環境変数
SELENIUM_REMOTE_URL
に、Selenium Remote の URL ( http://selenium-grid.example.com:4444 みたいなURL) を指定すれば、それだけでリモートブラウザが使える。
しかし、デフォルトだとヘッドレスモードで動いたり、コンテキストを指定できなかったりでカスタマイズができない。
カスタマイズした Playwright を作って、Agent に注入すれば、思い通りの Playwright を使うことができる。
from langchain_openai import ChatOpenAI
from browser_use import Agent, Browser
from playwright.async_api import async_playwright
import asyncio
import os
os.environ['SELENIUM_REMOTE_URL'] = 'http://selenium-grid.example.com:4444'
prompt = f'''
* https://www.example.com を開いてください。
* ログインボタンを...
* Email に ...
'''
sync def main():
async with async_playwright() as p:
# Playwright の browse を作ってカスタムする
playwright_browser = await p.chromium.launch(
headless=False, # ヘッドレスモードを無効化
)
browser_context = await playwright_browser.new_context(
viewport={'width': 670, 'height': 377}, # ビューポートサイズを設定
locale='ja-JP', # 言語設定
ignore_https_errors=True, # 証明書エラーを無視
)
# browser_use の Browser を作って、Playwright のブラウザを注入する
browser = Browser()
browser.playwright_browser = playwright_browser
browser.playwright = p
# Agent に、browser_use の Browser を注入する
agent = Agent(
task=prompt,
llm=ChatOpenAI(model="gpt-4.1-mini"),
browser=browser,
browser_context=browser_context,
)
result = await agent.run(max_steps=5)
print(result)
if __name__ == "__main__":
asyncio.run(main())