Browser-Use发送自然语言自动执行任务

使用 browser-user 开源项目实现自动化获取最新 10 条新闻使用手册

一、项目简介

browser-user 是一个可用于通过发送文本指令来自动化执行浏览器操作的开源项目。借助它,我们能够按照预设的文本指令,让程序自动打开网页、定位元素并提取所需信息,例如获取最新的 10 条新闻。

二、环境准备

2.1 操作系统

本项目支持多种主流操作系统,如 Linux(Ubuntu 等)、Windows、macOS。

2.2 软件依赖

  • Python:版本 3.7 及以上。你可以通过以下命令检查 Python 版本:
python --version

若未安装 Python 或版本不符合要求,可从 Python 官方网站 下载并安装。

  • 浏览器:建议安装 Chrome 浏览器,后续配置时需要用到其路径。

三、安装部署 browser-user

3.1 克隆项目仓库

打开终端,执行以下命令克隆 browser-user 项目到本地:

git clone <browser-user 项目的 GitHub 仓库地址>
cd <项目目录名>

3.2 创建并激活虚拟环境(可选但推荐)

为了避免项目依赖与系统全局 Python 环境冲突,建议创建并激活虚拟环境:

# 创建虚拟环境
python -m venv venv

# 激活虚拟环境(Linux/macOS)
source venv/bin/activate

# 激活虚拟环境(Windows)
.\venv\Scripts\activate

3.3 安装项目依赖

在激活虚拟环境后,使用以下命令安装项目所需的依赖:

pip install -r requirements.txt

3.4 安装浏览器驱动

项目使用 Playwright 进行浏览器自动化操作,需要安装相应的浏览器驱动。执行以下命令安装 Chrome 浏览器驱动:

playwright install chrome

四、配置项目

4.1 配置环境变量

在项目根目录下创建一个 .env 文件,用于存储必要的环境变量。以下是一个示例:

# Chrome 浏览器路径(根据实际情况修改)
CHROME_PATH="/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"
DEEPSEEK_API_KEY=替换成自己的KEY
ANONYMIZED_TELEMETRY=False

4.2 加载环境变量

在项目代码中加载 .env 文件中的环境变量,可使用 python-dotenv 库。在主脚本文件开头添加以下代码:

from dotenv import load_dotenv
import os

load_dotenv()
chrome_path = os.getenv('CHROME_PATH')

五、编写 Agent 代码

5.1 整体思路

我们的目标是编写一个 Agent 代码,让它能够按照我们的文本指令,打开新闻网站,定位新闻列表元素,提取前 10 条新闻的标题和链接,并将结果保存到本地文件。

5.2 示例代码

以下是一个完整的 Python 代码示例your_agent_code.py:

import asyncio
import os
import logging
from dotenv import load_dotenv
from langchain_openai import ChatOpenAI
from pydantic import SecretStr
from browser_use import Agent

# 配置日志记录
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
logger = logging.getLogger(__name__)

# 禁用匿名遥测
os.environ["ANONYMIZED_TELEMETRY"] = "false"

# 加载环境变量
load_dotenv()

def get_api_key():
    """获取 API 密钥,如果未设置则抛出异常"""
    api_key = os.getenv('DEEPSEEK_API_KEY', '')
    if not api_key:
        logger.error('DEEPSEEK_API_KEY is not set')
        raise ValueError('DEEPSEEK_API_KEY is not set')
    return api_key

def create_agent():
    """创建 Agent 实例"""
    api_key = get_api_key()
    task = '访问www.baidu.com,收集当前最热的十个话题,输出到本目录下result文件中,并保存到本'
    llm = ChatOpenAI(
        base_url='https://api.deepseek.com/v1',
        model='deepseek-reasoner',
        api_key=SecretStr(api_key),
    )
    agent = Agent(
        task=task,
        llm=llm,
        use_vision=False,
        max_failures=2,
        max_actions_per_step=1,
    )
    return agent

async def run_search():
    """运行搜索任务"""
    try:
        agent = create_agent()
        logger.info('Starting the search task...')
        await agent.run()
        logger.info('Search task completed successfully.')
    except Exception as e:
        logger.error(f'An error occurred during the search task: {e}', exc_info=True)

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

六、运行代码

在终端中,确保虚拟环境已激活,然后执行以下命令运行代码:

python your_agent_code.py  # 将 your_agent_code.py 替换为你保存上述代码的文件名

七、常见问题及解决方法

7.1 浏览器启动失败

  • 原因:Chrome 浏览器路径配置错误或浏览器未安装。
  • 解决方法:检查 .env 文件中的 CHROME_PATH 是否正确,确保 Chrome 浏览器已正确安装。

7.2 元素定位失败

  • 原因:新闻网站的 HTML 结构发生变化,导致选择器无法匹配到相应元素。
  • 解决方法:使用浏览器的开发者工具(如 Chrome 的开发者工具)检查网页结构,更新选择器。

7.3 网络请求超时

  • 原因:网络不稳定或网站响应缓慢。
  • 解决方法:检查网络连接,或在代码中增加等待时间,如 await page.wait_for_selector('.news-item', timeout=10000)

八、扩展功能建议

  • 支持更多新闻网站:修改代码中的 page.goto() 函数的参数,切换到不同的新闻网站。
  • 数据存储优化:将新闻数据保存到数据库(如 MySQL、MongoDB)中,方便后续查询和分析。
  • 定时任务:使用 schedule 库或系统的定时任务工具(如 Linux 的 cron),定期获取最新新闻。
<think>嗯,用户想知道如何结合browser-use和pytest来对测试用例文档进行自动化测试。首先,我需要明确browser-use是什么工具。可能是指一个用于浏览器自动化的库,比如Playwright或Selenium的某个封装?不过根据用户提供的引用内容,他们之前提到了pytest的运行命令,可能browser-use是指Playwright,因为Playwright常用于浏览器自动化,并且和pytest有较好的集成。 接下来,用户的需求是将浏览器自动化工具与pytest结合,实现测试用例的自动化。需要分步骤思考如何整合这两个工具。首先,安装必要的库,比如pytest和playwright,或者selenium?但用户提到的是browser-use,可能需要确认具体是哪个库。假设是Playwright,因为Playwright有browser上下文的概念,可能被简称为browser-use。 然后,考虑如何编写测试用例文档。通常,pytest的测试用例是写在.py文件中的函数或类方法里,使用特定的命名约定。用户可能需要将测试用例组织到这些文件中,并利用pytest的fixture机制来管理浏览器的启动和关闭。例如,创建一个browser fixture,在每个测试用例前启动浏览器,之后关闭。 另外,用户提供的引用中有提到运行pytest测试文件的命令,比如pytest tests/todo-page/ tests/landing-page/,这说明用户可能已经有测试目录结构,需要将浏览器测试整合进去。所以,可能需要指导用户如何在这些测试文件中引入browser-use的功能。 还有,关于测试用例文档,用户可能指的是如何将测试用例结构化,或者生成文档。但根据问题描述,更可能是如何用pytest编写测试用例,并用browser-use执行浏览器操作。因此,回答需要包括安装依赖、创建fixture、编写测试用例、运行命令等步骤。 同时,用户可能遇到异步的问题,因为Playwright支持异步操作,但pytest默认是同步的。是否需要使用pytest-asyncio插件来处理异步测试?或者在fixture中处理异步的浏览器启动? 另外,需要确保示例代码正确,比如使用Playwright的同步API还是异步API。如果用户不熟悉异步编程,可能更倾向于同步方式,所以示例代码应该使用同步方法,比如playwright.sync_api。 还需要注意测试用例的断言部分,如何结合pytest的断言机制来验证页面元素或行为是否符合预期。 最后,生成的相关问题需要考虑用户可能进一步的需求,比如并行测试、配置不同浏览器、处理测试数据或生成报告等。</think>### 如何使用 browser-use 和 pytest 结合实现自动化测试 以下是将 `browser-use`(假设为浏览器自动化工具,如 Playwright/Selenium)与 `pytest` 结合的步骤: --- #### 1. **环境搭建** - 安装依赖库: ```bash pip install pytest browser-automation-library # 假设 browser-use 对应 Playwright/Selenium 封装库 playwright install # 若使用 Playwright 需安装浏览器内核 ``` --- #### 2. **创建浏览器管理 Fixture** 在 `conftest.py` 中定义浏览器生命周期管理: ```python import pytest from browser_use import Browser # 假设 browser-use 的模块名 @pytest.fixture(scope="function") def browser(): browser = Browser().launch(headless=False) # 启动浏览器实例 yield browser browser.close() # 测试结束后关闭浏览器[^1] ``` --- #### 3. **编写测试用例文档** 在测试文件(如 `test_login.py`)中结合浏览器操作: ```python def test_login(browser): browser.navigate_to("https://example.com/login") browser.fill("#username", "test_user") browser.fill("#password", "secure_pass") browser.click("#submit-button") assert browser.get_text(".welcome-message") == "登录成功" ``` --- #### 4. **运行测试** 通过以下命令执行特定测试文档: ```bash pytest tests/login-page/ # 运行 login-page 目录下所有测试用例[^1] pytest test_login.py::test_login # 运行单个测试用例[^2] ``` --- #### 5. **集成报告与配置** - 生成 HTML 报告: ```bash pytest --html=report.html ``` - 配置并行执行(需安装 `pytest-xdist`): ```bash pytest -n 4 # 使用4个进程并行执行 ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值