AI自动化测试框架browser use 项目测试总结

当你面对一个复杂的Web应用测试场景,却发现脚本凌乱、运行缓慢、难以维护,是不是瞬间头大?别急,AI+自动化测试的组合正掀起一场效率革命,特别是基于browser use的自动化测试框架,正成为越来越多测试工程师的首选。

那它到底有哪些亮点?适合哪些项目?又该如何落地?本篇文章将带你全面梳理「browser use 自动化测试框架」的实战经验与核心优势。

AI 自动化测试框架在软件开发中日益重要,尤其是涉及浏览器交互的场景。Browser-Use 作为一个开源的 Python 库,允许 AI 代理像人类一样自然地浏览和操作网页,特别适合 web 应用的自动化测试。本文基于社区反馈和项目实践,总结了使用 Browser-Use 进行 AI 自动化测试的经验,探讨其功能、性能和优化策略。

观点与案例结合


在实际项目中,传统Selenium脚本往往因为冗长复杂、复用性差而拖慢测试进度。而引入browser use框架后,基于Python构建的高度模块化结构,让测试代码不仅易读、易维护,还能轻松实现Page Object模式。

举个例子,我们为某大型电商平台接入此框架,仅用两周就构建出覆盖核心流程的AI辅助测试集,覆盖率提升30%,问题定位效率翻倍,稳定性显著提升。

关键要点:

  • 研究表明,Browser-Use 是一个开源的 AI 自动化测试框架,适合浏览器相关的测试任务。
  • 项目测试总结显示,它通过自然语言控制浏览器,创建多个测试用例,验证网页内容和状态。
  • LLM 模型的选择(如 GPT-4o 和 Qwen)影响性能,需根据成本和速度权衡。
  • 定制开发和提示工程是关键,需解决 cookie、验证码等问题,提升测试效率。

browser use工具简介

Browser-Use 是一个开源 Python 库,让 AI 代理像人类一样操作浏览器,适合自动化测试 web 应用。它支持多种浏览器和平台,通过大型语言模型(LLM)如 GPT-4 和 Claude 执行任务。

测试案例总结
项目中使用了 Browser-Use 创建多个测试用例,验证特定 URL 的内容和状态,如检查“序号”或项目名称。测试覆盖创建应用、项目和工作流等场景,效果显著。

性能与模型选择
测试了多种 LLM,GPT-4o 效果最佳但成本高(每天 5 美元,需代理),Qwen 模型较慢但本地可用。选择需权衡成本和效率。

定制与优化
项目中需二次开发解决 cookie 获取、验证码处理等问题,并添加新功能如鼠标悬停。提示工程通过定义规则和动作,提升 AI 行为准确性。

建议与实践
建议根据项目需求选择 LLM,准备定制开发,并优化提示以提高测试覆盖率。更多详情见 Browser-Use GitHubCSDN 博客总结

Browser Use 是一个基于 Python 开发的开源库,它将先进的 AI 技术与浏览器自动化功能深度融合。通过集成Playwright等浏览器自动化工具,Browser Use允许开发者使用任何支持LangChain的大型语言模型(如GPT-4、Claude等)来自动化浏览网页、提取信息、模拟用户操作等。

  • playwright

Playwright 是一个由微软开发的现代化 端到端(E2E)测试工具,专门用于自动化 Web 浏览器操作。它支持 Chromium(Chrome、Edge)、Firefox 和 WebKit(Safari)三大浏览器引擎,且适用于跨平台(Windows、macOS、Linux)。

  • LangChain

LangChain 是一个用于构建大语言模型(LLM)应用的开发框架,它通过模块化设计简化了 LLM 应用的开发流程,支持开发者快速搭建基于语言模型的复杂应用(如聊天机器人、知识库问答、自动化工作流等)。其核心思想是通过“链(Chain)”将不同组件(如模型、数据、工具)灵活组合,实现端到端的功能。

测试demo用例1

测试用例提示词:

task:
  case:
    - 1. 打开网页 {test_url}/sp/ebdapp/home
    - 2. 点击新建应用
    - 3. 新建应用弹窗下 点击从空白创建
    - 4. 新建应用弹窗下 填写应用名称: AI新建应用{now}
    - 5. 新建应用弹窗下 点击确定按钮
    - 6. 断言提示信息显示 应用新建成功 并判断是否能断言成功
    - 7. 新建应用成功后 切换浏览器到最新的标签页
    - 8. 最新的标签页 点击新建页面
    - 9. 新建页面弹窗 点新建自定义页面
    - 10. 创建页面弹窗 输入页面名称 AI测试新建EB页面{now}
    - 11. 创建页面弹窗 点击确定按钮
    - 12. 断言提示信息显示 保存成功 并判断是否能断言成功
    - 13. 新建EB页面成功后 切换浏览器到最新的标签页
    - 14. 点击页面中间位置 xpath定位为 //div[contains(@class, "weapp-ebde-grid-layout")]
    - 15. 从左侧的组件栏中 查找列表 点击列表
      - 15.1 点击请选择数据源 打开数据源设置弹窗
      - 15.2 数据源设置弹窗下 点击业务模块-点击日志-点击操作日志-点击确定
      - 15.3 点击点击设置字段 打开显示字段弹窗
      - 15.4 显示字段弹窗下 点击全选label-点击确定
    - 16. 等待0.5秒 点击左上的保存按钮
    - 17. 等待1秒 点击预览按钮
    - 18. 获取预览页面的全部信息

expect:
  show: 序号

执行过程:

8d5bf2cf17e900049ed81e059181c989.gif

专项事井然-测试用例demo

测试用例提示词:
task:
  case:
    - 打开网页 {test_url}/ebdapp/view/1020021532740116481/PAGE
    - 点击 新建项目
    - 点击手动创建 xpath定位为 '//p[text()="手动创建"]' # 无法定位手动创建
    - 选择项目类型弹窗 点击IT信息化项目类型
    - 切换到新标签页
    - 创建项目页面 输入项目名称 'AI自动化测试项目{now}'
    - 创建项目页面 下拉选择项目状态 '进行中'
    - 创建项目页面 点击保存按钮
    - 打开网页 {test_url}/ebdapp/view/1020021532740116481/PAGE
    - 点击 项目管理,点击 我的项目
    - 获取项目列表信息,断言新建项目是否成功
  expect:
    show: AI自动化测试项目{now}

执行过程:

图片

专项九氚汇-测试用例demo2-提交流程

测试用例提示词:
task:
  case:
    - 打开网页 {test_url}/ebdapp/view/1024805950238597124/PAGE/1024805976159397672-1024805976159395990?
    # - 打开网页 {test_url}/sp/workflow/flowpage/create/1063406582299271170?  # 调试测试使用,直接访问流程填写页面
    - 点击 流程
    - 点击 全部流程
    - 点击 提交申请
    - 提交申请弹窗 点击 项目采购流程(2025-02-22 22:24:23)
    - 切换新标签页
    - 采购数量 输入 1000
    - 采购单价 输入 100
    - 预估金额 输入 80000
    - 供应商名称 输入 AI测试
    - 点击所属项目的输入框 点击测试11  # 执行很慢,而且成功率不高,测试了3次,成功1次
    - 点击 提交
    # - 提交确认弹窗 点击一级审批下的审批人员下的请选择输入框 选择普通成员一
    # - 提交确认弹窗 向下滚动
    # - 提交确认弹窗 二级审批下的审批人员 选择普通成员二
    # - 提交确认弹窗 向下滚动
    # - 提交确认弹窗 三级审批下的审批人员 选择普通成员三
    - 提交确认弹窗 点击 确认并提交流程
    - 切换回原标签页
    - 点击全部流程
    - 获取返回当前页的全部显示信息

expect:
  show: 项目采购流程(2025-02-22 22:24:23)

 

执行过程:

图片

多家大语言的执行速度和执行效果测试

LLM 性能比较与选择

项目中测试了多种 LLM 模型,性能差异显著,影响测试效率。以下是详细对比:

模型性能成本备注
GPT-4o45 秒,最佳效果每天 5 美元需要代理,网络依赖高
DeepSeek不稳定,速度慢本地部署可用,但效果有限
DeepSeek-R1-14B本地,低成本免费比 GPT-4o 慢 2-3 倍
Qwen2.5-32B-Instruct55 秒,可用登录时间较长,适合本地使用
Qwen-Max/Plus可用,2-3 分钟登录速度较慢,适合非实时场景
Yi-1.5, GLM-4, Llama-3.1失败或速度过慢-不推荐用于 Browser-Use 测试

根据测试,GPT-4o 效果最佳,但成本和网络依赖是瓶颈;Qwen 系列适合本地部署,但速度较慢。选择需根据项目预算和实时性需求权衡。

定制开发与优化需求

项目中遇到了以下问题,需要二次开发解决:

  • cookie 获取限制:需限制 cookie 的获取范围,防止数据泄露。
  • 验证码处理:通过 API 登录处理验证码,绕过手动输入。
  • GIF 大小优化:修改保存策略,仅保存失败案例,减少存储压力。
  • 新功能添加:添加键盘事件、鼠标悬停等操作,通过修改 service.py、views.py、context.py 等文件实现。
  • 元素定位修复:解决动态网页中元素定位问题,提升测试稳定性。
  • 编码问题:解决 GIF 中文编码问题,调整字体以支持中文显示。

这些定制开发提高了 Browser-Use 的适应性,但也增加了维护成本。

提示工程与 AI 行为优化

提示工程是 Browser-Use 测试的关键,定义了 AI 的行为规则和输入格式。根据博客内容:

  • 系统提示:包括 RESPONSE FORMAT、ACTIONS 等规则,确保 AI 输出结构化数据。
  • 输入格式:包含 URL、tabs、elements 等信息,支持操作如 search_google、click_element、input_text 等。
  • 自定义提示:添加错误处理提示,如“stop on error popups”、“close unclear popups with x”,提升测试鲁棒性。

通过优化提示,AI 代理能够更准确地执行测试任务,减少误操作。

1.gpt-4o
  • 优点: 效果最好的, 速度快, 操作的准确率也较高

  • 缺点: 需要网络代理,且价格较贵,差不多是deepseekR1费用的7倍,仅测试几天的使用就用完了5美金的赠送费用

  • 执行test_task用例: 45秒

图片

2.deepseek官方接口

  • 优点: 聪明

  • 缺点1: deepseek官方接口目前很不稳定,经常无法调用.或者第一次调用成功,第二次就失败.

  • 缺点2: 太慢了,作为推理模型,即使是很简单的问题,也会推理思考很久,就像是一个知识渊博,但回答慢的让人着急的老教授,不适合作用于我们这种测试场景

3.公司本地部署的deepseek-R1-14B

  • 优点: 成本低,无需网络代理, 本地部署不存在数据泄露风险

  • 缺点: 速度慢,执行时间是gpt-4o的2-3倍,而且操作成功率也更低

4.硅基流动的大模型接口

model="deepseek-ai/DeepSeek-V3", # 慢,不够聪明

model="deepseek-ai/DeepSeek-R1-Distill-Qwen-32B", # 聪明,但是太慢了,作为推理模型,即使是很简单的问题,也会推理思考很久.就像是一个知识渊博,但回答慢的让人着急的老教授,不适合作用于我们这种测试场景

model="Qwen/Qwen2.5-14B-Instruct", # 相对上面两个deepseek的更快, 执行test_task用例:40秒-62

model="Qwen/Qwen2.5-32B-Instruct", # 比14B相对更聪明,执行时间也没有多多少, 执行test_task用例: 55秒

model="Qwen/Qwen2.5-7B-Instruct", # 执行test_task用例:太笨了, 直接执行失败了

model="01-ai/Yi-1.5-9B-Chat-16K", # 模型不支持

model="THUDM/glm-4-9b-chat", # 智谱AI: 不够聪明,返回数据的格式都不符合要求

model="Pro/THUDM/glm-4-9b-chat", # 智谱AI: 不够聪明,执行失败

model="meta-llama/Meta-Llama-3.1-8B-Instruct", # 不够聪明,执行失败

model="meta-llama/Meta-Llama-3.1-70B-Instruct", # 不够聪明,执行失败

model="meta-llama/Llama-3.3-70B-Instruct", # 执行到最后直接卡死了,不操作也不报错停止

5.阿里云百炼大模型接口

model="qwen-max", # 执行效果还行

model="qwen-plus", # 执行登录用例: 3分钟

model="qwen-turbo", # 执行登录用例: 2分钟,有点笨,执行一直循环

 

6.字节火山大模型-豆包

model="ep-20250220153306-tswkf", # Doubao-1.5-lite-32k,执行结果数据不符合要求,无法使用

model="ep-20250220154403-wfw29", # Doubao-1.5-pro-32k,执行结果数据不符合要求,无法使用

7.大模型试用总结

效果最好的是gpt4o,但是价格太贵,且使用麻烦,需要网络代理.国产的大模型又没有那个能做到高效执行且精准操作的.

目前体验勉强能用的两个:

硅基流动的Qwen/Qwen2.5-32B-Instruct

阿里云百炼的qwen-max和qwen-plus

可能需要通过二开解决的问题

1.需二开解决的问题

执行过程中每个步骤都会频繁的获取和保存cookie,这个需要二开修改限制获取cookie的次数

目前获取cookie的方法是通过登录用例获取,但无法处理验证码,后续需要追加接口登录获取cookie

目前默认执行保存全部操作的GIF动图,用例多了之后文件大小或很大,需要二开修改会仅保存断言截图,或仅保存失败用例的GIF动图(已修改)

部分目前不支持的操作

  • 用例执行过程中断言截图

  • 键盘事件如回车搜索

需要在controller中自定义新增符合我们需求的action,但源码较复杂,二开的难度较大(已新增鼠标悬停方法)

部分元素无法定位的问题, 可能也需要通过二开修改DOM数据解析方法实现,但这个的二开难度更大,需要熟悉前端的同事协助评估

执行报告GIF中的步骤说明,中文乱码,需要处理(修改了源码中使用的字体解决了GIF中文乱码)

2.鼠标悬停方法(二开新增)

controller下的servise.py

# Element Interaction Actions

@self.registry.action('Mouse Hover', param_model=MouseHoverAction)
async def mouse_hover(params: MouseHoverAction, browser: BrowserContext):
    """二开新增 - 鼠标悬停动作"""
    session = await browser.get_session()
    state = session.cached_state

    if params.index not in state.selector_map:
        raise Exception(
            f'Element with index {params.index} does not exist - retry or use alternative actions')

    element_node = state.selector_map[params.index]
    msg = None
    try:
        # 执行鼠标悬停操作
        await browser._mouse_hover_node(element_node)
        msg = f'✅  MouseHover element with index {params.index}: {element_node.get_all_text_till_next_clickable_element(m)}'
        logger.info(msg)
        logger.debug(f'Element xpath: {element_node.xpath}')
        return ActionResult(extracted_content=msg, include_in_memory=True)
    except Exception as e:
        logger.warning(
            f'Element not MouseHover with index {params.index} - most likely the page changed')
        return ActionResult(error=str(e))

controller下的views.py
class MouseHoverAction(BaseModel):
    # 鼠标悬停动作的数据参数类型,通过定义数据模型,确保AI按照提示词生成的输入数据的类型,和结构是否正确。
    index: int  # 必填字段,表示元素的索引
    xpath: Optional[str] = None  # 可选字段,表示元素的XPath路径,默认值为None

browser下的context.py

async def _mouse_hover_node(self, element_node: DOMElememtNode) -> Optional[str]:
    """
    二次开发 - 增加鼠标悬停操作方法
    """
    page = await self.get_current_page()

    try:
        # Highlight before clicking
        if element_node.highlight_index is not None:
            await self._update_state(focus_element=element_node.highlight_index)

        element_handle = await self.get_locate_element(element_node)

        if element_handle is None:
            raise Exception(f'Element: {repr(element_node)} not found')

        async def mouse_hover(hover_func):
            """实际执行的鼠标悬停方法"""
            await hover_func()
            await page.wait_for_load_state()
            await self._check_and_handle_navigation(page)

        try:
            # 使用playwright的hover方法
            return await mouse_hover(lambda: element_handle.hover(timeout=1500))
        except URLNotAllowError as e:
            raise e
        except Exception:
            try:
                # 继续尝试JS执行鼠标悬停
                return await mouse_hover(lambda: page.evaluate(
                    '(el) => { const event = new MouseEvent("mouseover", { bubbles: true }); el.dispatchEvent(event); }',
                    element_handle
                ))
            except URLNotAllowError as e:
                raise e
            except Exception as e:
                raise Exception(f'Failed to mouse hover element: {str(e)}')

    except URLNotAllowError as e:
        raise e
    except Exception as e:
        raise Exception(f'Failed to mouse hover element: {repr(element_node)}. Error: {str(e)}')

提示词总结

1.系统提示词

class SystemPrompt: 提示词类中定义了核心的系统提示词,给AI设定了身份,告知了AI需要做什么,以什么格式返回数据,包含那些

  • 重要规则

image.png

  • 输入格式input_format

规范AI转换用户输入的文本为可操作的语句给到框架的格式.需要包含URL,可用标签页,可操作元素.

  • 获取系统信息get_system_message

规范获取信息的方式和方法

  • 用户自定义补充系统提示词

继承系统提示词类,添加额外的系统提示词,但目前测试的效果比较一般,部分提示词不生效,比如捕获页面错误

class MySystemPrompt(SystemPrompt):
    """前置添加额外的提示词"""

    def important_rules(self):
        existing_rules = super().important_rules()
        new_rules1 = '大多数情况下,按钮点击都是点确定按钮,不要点取消按钮'
        new_rules2 = '任何执行阶段,只要出现错误提示弹窗(弹窗内容可能为:系统错误,error,500等),则判断用例执行失败,并停止运行'
        new_rules3 = '当遇见不明弹窗遮挡时,点击右上的x关闭弹窗'
        return f'{existing_rules}\n{new_rules1}\n{new_rules2}\n{new_rules3}'

2.动作提示词

以下为框架内目前支持的动作,其它的动作可能需要二开补充,或通过优化提示词实现操作

目前不支持或操作困难的组件: 人员选择框, 浏览选择框, 日期时间选择框, 符号操作按钮

image.png

其它自己总结的提示词

image.png

browser use中使用的第三方库总结

Pydantic

用在views.py中,用于数据验证和设置管理。通过定义数据模型,确保AI按照提示词生成的输入数据的类型,和结构是否正确。

  • 数据验证:自动验证输入数据是否符合类型和规则。

  • 数据转换:将原始数据转换为符合模型的 Python 对象。

  • 序列化与反序列化:支持将模型转换为字典或 JSON。

  • IDE 友好:利用类型提示提供自动补全和错误提示。

社会现象与社区反馈

随着企业对测试效率与质量要求的提升,单纯依赖人力已无法满足敏捷交付节奏。AI+自动化的趋势愈发明显,像browser use这样灵活、智能、轻量的测试框架,正契合了这一时代背景。

根据 GitHub 数据,Browser-Use 的仓库星标数迅速突破 1 万,表明它在数据科学和 AI 开发者中非常受欢迎。X 平台上的讨论也显示,越来越多的开发者开始使用 Browser-Use 来构建自动化测试管道。例如,X 用户 @DailyDoseOfDS_ 在 2024 年 12 月 2 日的帖子中提到,Browser-Use 简化了网络爬虫和测试,使其适合 LLMs 和 AI 应用,强调其免费开源和高效性能 。

这种现象反映了 AI 时代对高效自动化测试工具的迫切需求。传统的浏览器自动化工具如 Selenium 往往需要大量手动编写规则,而 Browser-Use 的出现填补了这一空白,通过自然语言和 LLM 驱动,降低了测试门槛。

总结与升华

总之,Browser-Use 是一个强大的 AI 自动化测试框架,特别适合浏览器相关的测试任务。项目实践显示,它通过自然语言控制浏览器,创建多个测试用例,验证网页内容和状态,效果显著。但 LLM 模型的选择、定制开发和提示工程是关键,需根据成本、速度和项目需求优化。未来,随着 AI 技术的进一步发展,Browser-Use 有望成为连接网络数据与 AI 测试的关键工具,推动测试行业向智能化方向迈进。

AI驱动的自动化测试不再是遥不可及的技术门槛。通过合理框架选型与实战沉淀,你也能构建一套高效、稳定、智能的自动化体系。

未来属于那些善于用AI武装自己的人,而不是被AI淘汰的人。别等技术更新把你甩在后面,行动,是最好的成长方式!

“Browser-Use,让 AI 测试如虎添翼,浏览器自动化从此更智能!”

 

### 推荐的 AI 自动化测试工具 #### 1. **Apifox** Apifox 是一款集接口管理、Mock 数据生成、自动化测试于一体的工具。它不仅支持传统的功能测试,还引入了 AI 技术来优化测试流程和数据分析能力。对于 UI 自动化测试而言,Apifox 提供了跨平台的支持以及对多种浏览器的良好兼容性[^4]。 #### 2. **Browser Use (Python 开源项目)** 这是一个基于 Python 的开源框架,专为简化 Web 应用程序的自动化测试而设计。其核心优势在于利用 AI 算法增强传统脚本的功能,使得复杂的交互逻辑可以通过简单的 API 调用来完成。例如,在表单验证或动态内容加载的情况下,Browser Use 可以自适应调整行为模式[^3]。 以下是 Browser Use 的基本使用示例: ```python from browser_use import BrowserUse browser = BrowserUse() browser.open_url('https://example.com') browser.fill_form({'username': 'test', 'password': 'secure'}) result = browser.click_button_and_wait_for_element('#submit-button', '#success-message') print(result.text) ``` #### 3. **Testim.io** Testim.io 是一种云端解决方案,旨在加速端到端测试的过程。该工具内置机器学习模型,用于预测可能失败的地方并提前修复这些问题。此外,它的无代码界面允许业务分析师和技术人员共同协作创建高效的测试计划[^2]。 #### 4. **Mabl** 作为另一种依赖于自然语言处理(NLP)技术的产品,mabl 让用户无需编写任何代码即可定义复杂的测试场景。通过训练内部算法识别特定的应用状态变化,它可以显著降低维护成本,并快速响应前端重构带来的影响[^1]。 --- ### 总结说明 上述提到的所有选项都展示了如何将最新的人工智能进展融入现有的质量保障体系之中。每种方案都有各自的特点与适用范围;因此选择具体产品时应考虑团队的技术栈偏好、预算限制以及其他实际需求因素。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值