browser-use 库网页自动化截图

目录

代码

python 复制代码
import asyncio
import base64
import os
from datetime import datetime

import pytest

from browser_use.browser.browser import Browser, BrowserConfig

async def test_take_full_page_screenshot():
    browser = Browser(config=BrowserConfig(
        browser_instance_path=r"C:\Program Files\Google\Chrome\Application\chrome.exe",
        headless=False, disable_security=True))

    async with await browser.new_context() as context:
        page = await context.get_current_page()
        # Go to a test page
        await page.goto('https://www.google.com')

        await asyncio.sleep(3)
        # Take full page screenshot
        screenshot_b64 = await context.take_screenshot(full_page=True)
        await asyncio.sleep(3)
        
        # 创建screenshots目录(如果不存在)
        screenshots_dir = os.path.join(os.path.dirname(__file__), 'screenshots')
        os.makedirs(screenshots_dir, exist_ok=True)
        
        # 生成带时间戳的文件名
        timestamp = datetime.now().strftime('%Y%m%d_%H%M%S')
        screenshot_path = os.path.join(screenshots_dir, f'screenshot_{timestamp}.png')
        
        # 将base64字符串解码并保存为图片文件
        with open(screenshot_path, 'wb') as f:
            f.write(base64.b64decode(screenshot_b64))
        
        print(f'Screenshot saved to: {screenshot_path}')

        # Verify screenshot is not empty and is valid base64
        assert screenshot_b64 is not None
        assert isinstance(screenshot_b64, str)
        assert len(screenshot_b64) > 0

        # Test we can decode the base64 string
        try:
            base64.b64decode(screenshot_b64)
        except Exception as e:
            pytest.fail(f'Failed to decode base64 screenshot: {str(e)}')

    await browser.close()

if __name__ == '__main__':
    asyncio.run(test_take_full_page_screenshot())

代码解释

  1. 导入必要模块
python 复制代码
import asyncio  # 用于异步操作
import base64   # 用于处理base64编码的图片数据
import os       # 用于文件和目录操作
from datetime import datetime  # 用于生成时间戳
  1. 测试函数定义
python 复制代码
async def test_take_full_page_screenshot():

这是一个异步测试函数,用于测试网页截图功能。

  1. 浏览器初始化
python 复制代码
browser = Browser(config=BrowserConfig(
    browser_instance_path=r"C:\Program Files\Google\Chrome\Application\chrome.exe",
    headless=False,  # 显示浏览器界面
    disable_security=True))  # 禁用安全限制
  1. 页面操作
  • 创建新的浏览器上下文
  • 打开谷歌首页
  • 等待3秒让页面加载
  • 获取全页面截图(base64格式)
  1. 截图保存流程
python 复制代码
# 创建保存目录
screenshots_dir = os.path.join(os.path.dirname(__file__), 'screenshots')
os.makedirs(screenshots_dir, exist_ok=True)

# 生成文件名(使用时间戳)
timestamp = datetime.now().strftime('%Y%m%d_%H%M%S')
screenshot_path = os.path.join(screenshots_dir, f'screenshot_{timestamp}.png')

# 保存图片
with open(screenshot_path, 'wb') as f:
    f.write(base64.b64decode(screenshot_b64))
  1. 验证步骤
  • 检查截图数据不为空
  • 验证数据类型是字符串
  • 确保数据长度大于0
  • 测试能否正确解码base64数据
  1. 程序入口
python 复制代码
if __name__ == '__main__':
    asyncio.run(test_take_full_page_screenshot())

使用 asyncio.run() 运行异步测试函数

这个脚本的主要目的是:

  1. 自动化测试网页截图功能
  2. 保存截图到本地文件
  3. 验证截图数据的有效性
  4. 提供可重复的测试用例

运行后会在脚本所在目录下创建 screenshots 文件夹,并保存带时间戳的PNG格式截图。

执行效果

bash 复制代码
python screenshot_test.py
INFO     [browser_use] BrowserUse logging setup complete with level info
INFO     [root] Anonymized telemetry enabled. See https://docs.browser-use.com/development/telemetry for more information.
Screenshot saved to: D:\llm\browser-use-test\browser-use\screenshots\screenshot_20250326_234705.png
相关推荐
DeepAgent5 分钟前
AI Agent 入门指南(05):Agent 循环——观察、思考、行动
面试·agent
钱栈up13 分钟前
番茄小说榜单爬虫失效排查:从页面路由变更到API参数映射的全流程复盘
python
唐璜Taro24 分钟前
Agent Harness 系列 · 第 1 篇|Agent 不只是换一个更强的模型
人工智能·python
iPad协议个微协议27 分钟前
微信自动回复从关键词到 AI:WechatApi 如何连接消息、模型和人工
微信·自动化·微信开发·wechatapi·个人微信号二次开发
泡茶喝茶写代码1 小时前
量化数据进阶:多维实战篇(第 11 篇):历史涨跌停价:涨跌停序列与止损线测算
java·python·股票数据api·股票数据·股票数据api接口·股票api数据接口·股票量化数据api
liulilittle1 小时前
mock 规范总纲
ai·自动化·llm·mock·测试·tools
ikun_文1 小时前
Django开启跨域请求
python·pycharm·django
外收内放1 小时前
Python与AI应用(项目开发实战:AI智能伴侣第三版)
python·学习·ai编程
别动我齐刘海1 小时前
ROS2 Jazzy + C++ 实战路线——进阶学习3
c++·人工智能·vscode·python·算法·机器学习·机器人
Logintern092 小时前
“以一致的顺序获取锁“是预防死锁最核心、最有效的手段
python·postgresql·锁机制