browser-control
스타16
포크4
업데이트2026년 3월 7일 15:47
使用 PageAgent 强化能力控制浏览器,获取带有交互索引的 DOM 树,并执行精确点击和输入操作。
설치
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SKILL.md
readonly메뉴
使用 PageAgent 强化能力控制浏览器,获取带有交互索引的 DOM 树,并执行精确点击和输入操作。
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
| name | browser_control |
| description | 使用 PageAgent 强化能力控制浏览器,获取带有交互索引的 DOM 树,并执行精确点击和输入操作。 |
| author | VibeWorker |
| version | 1.0.0 |
该技能使你能够深入理解浏览器中加载的网页,获取结构化的 DOM 树,并进行精确的交互。
如果你需要控制网页并点击特定元素,请始终优先使用此技能,而不是普通的 fetch_url。
要在浏览器中执行操作,你需要向 VibeWorker 的扩展系统发送特定的指令。
你必须使用 python_repl 运行 Python 代码来与扩展通信。
你可以使用已有的通过请求发向后端触发扩展的能力,但如果需要交互,请直接使用下面的第 2 步和第 3 步代码。 如果目标标签页已经存在,你可以尝试找到它的 tabId。为了方便,我们通常会在需要交互时打开一个新标签页并记住它的 id。
import requests
import json
import time
# 辅助函数:向扩展发送指令
def send_extension_action(action, payload):
try:
response = requests.post("http://localhost:8088/api/extension/action", json={
"action": action,
"payload": payload
})
return response.json()
except Exception as e:
return f"Error connecting to extension api: {str(e)}"
向扩展发送 PAGE_AGENT_EXTRACT 指令。
你需要提供目标网页所在的 tabId。
# 假设 tab_id 是已知的一个标签页 ID (比如 123)
tab_id = 123
result = send_extension_action("PAGE_AGENT_EXTRACT", { "tabId": tab_id })
print(json.dumps(result, indent=2, ensure_ascii=False))
仔细分析返回的 FlatDomTree(它通常是一个简化的 HTML 字符串,每个可交互元素带有一个独特的自定义属性,例如 data-page-agent-index="45")。
找到你需要交互的元素的索引号(index)。
根据上一步获取的 index,向扩展发送 PAGE_AGENT_ACTION 指令。
点击操作:
# 假设你要点击 index 为 45 的元素
result = send_extension_action("PAGE_AGENT_ACTION", {
"tabId": tab_id,
"domAction": "click",
"index": 45
})
print("Result:", result)
输入文本操作:
# 假设你要在 index 为 12 的输入框中输入 "Hello VibeWorker"
result = send_extension_action("PAGE_AGENT_ACTION", {
"tabId": tab_id,
"domAction": "input",
"index": 12,
"text": "Hello VibeWorker"
})
print("Result:", result)
向下滚动:
result = send_extension_action("PAGE_AGENT_ACTION", {
"tabId": tab_id,
"domAction": "scroll",
"text": json.dumps({"down": True, "numPages": 1})
})
print("Result:", result)
time.sleep() 或 timeout 等待。扩展内部已经内置了必要的渲染等待时间,你可以立刻执行下一步操作。