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 等待。扩展内部已经内置了必要的渲染等待时间,你可以立刻执行下一步操作。