browser-use:AI 驱动的浏览器自动化神器——DOM识别与交互详解

boyanx22小时前技术教程2

browser-use 可以识别网页中可交互DOM内容,并能与之进行交互。本文将详细介绍 browser-use 实现这一核心功能的技术细节。


一、可交互元素识别

browser-use 是通过 DOMService 来进行 DOM 元素的识别与交到。DOMService 主要作用如下:

  • 解析和处理页面的 DOM 结构
  • 提供元素定位和交互能力
  • 维护元素状态和历史记录

DOMService 通过以下的条件来判断某一个DOM元素是否可交互:

// 详细可以看 buildDomTree.js
const isInteractiveElement = 
    hasAriaProps ||
    hasClickHandler ||
    hasClickListeners ||
    isDraggable ||
    isContentEditable

最新合入的代码里也可通过判断 element 和 cursor 是否是可交互属性, 如 pointer、cell、grab 等。


二、元素编号与描述

  • 可交互元素会被分配唯一的编号,会将元素描述和编号一起发给 LLM
  • 结构: [索引]<标签名 属性值1;属性值2>文本内容/>
[1]<button 登录按钮;btn-primary>登录/>
[2]<input 请输入用户名;text;username/>

三、元素定位机制

  1. 元素映射

browser-use 内部维护着一个 selector_map 映射, 将元素索引映射到元素信息

SelectorMap = dict[int, DOMElementNode]
  1. 元素定位

当要点击索引为 1 的元素的时候,会执行以下步骤:

@self.registry.action('Click element', param_model=ClickElementAction)
	def click_element():
		# 1. 获取 index 对应的 element node
		element_node = await browser.get_dom_element_by_index(params.index)

	  # 2. 点击元素
		await browser._click_element_node(element_node)
  1. 元素交互

_click_element_node 过程中,会优先看 element_node 能不能解析出 css_selector, 如果不可以,再使用 xpath (xptah 是构建 dom 树的时候生成)。


四、视觉辅助

当启动 use_vision 时,Agent 会将当前页面截图一起发给 LLM。

标签: tree.js

相关文章

循序渐进Vue+Element 前端应用开发(8)—树列表组件的使用

在我前面随笔《循序渐进VUE+Element 前端应用开发(6)--- 常规Element 界面组件的使用》里面曾经介绍过一些常规的界面组件的处理,主要介绍到单文本输入框、多文本框、下拉列表,以及按钮...

搞趣网:我的世界手机版0.13.1JS大全 0.13.1JS下载汇总

为大家分享我的世界0.13.1JS大全,整理了现在比较优秀的我的世界0.13.1JS汇总,有需要的小伙伴们不要错过了。0.13.1相关资源0.13.1JS汇总0.13.1服务器0.13.1材质包0.1...

2025 年值得尝试的 5 个被低估的 JavaScript 库

这些 JavaScript 库可能不会在社交媒体或 Hacker News 上流行起来,但它们会显著提高您的工作效率和代码质量。JavaScript 不再只是框架 。虽然 React、Vue 和 Sv...

为何推荐 JsonTree.js 做 JSON 可视化?

大家好,很高兴又见面了,我是"高级前端进阶",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发,您的支持是我不断创作的动力。什么是 Jso...

来了!JavaScript 最强大的 8 个 DOM API

作为前端开发者,我们每天都在操作 DOM,但 DOM API 中隐藏着许多鲜为人知却极其实用的方法。本文将介绍一些「冷门但能显著提升开发效率」的DOM操作技巧。1. Element.checkVisi...

D3.js 4.0.0 发布,JavaScript 可视化库

D3 现在是许多库的模块化组件,当然也可以独立使用。D3.js 是基于数据操作文档的 JavaScript库,通过 HTML、SVG 和 CSS 绑定数据。D3 包括可视化组件与数据驱动型的 DOM...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。