Skip to content

【建议】能否支持悬停下拉菜单与点击任意位置(hover / 坐标点击)? #75

Open

Description

@naroah-u

作者您好,首先感谢您开发了这个非常好用的插件,让我能通过 DeepSeek Harness 直接操作真实浏览器并保留登录态,体验非常棒!

我实际使用中遇到一个体验上的瓶颈,想请教一下是否有改进的空间:

问题描述

目前模型只能操作 browser_snapshot 里"被编号的可交互元素"(browser_click 只接受 index),无法做到:

  1. 鼠标悬停(hover)展开下拉菜单:很多网站(比如超星学习通等校园平台)的菜单是需要把鼠标移上去才会展开子菜单的,这种子菜单项不会被快照识别,模型就点不到;
  2. 点击页面上任意位置/坐标:比如点击空白处关闭浮层、点击画布元素等,这些都无法用"编号元素"完成;
  3. 右键菜单等鼠标事件:同样无法触发。

可能的解决方向(抛砖引玉)

我不确定哪个更契合项目的架构,仅供作者参考:

  • 方向一:在工具面新增 browser_hover(index)(对某元素 hover,用于展开下拉)和 browser_click_at(x, y)(按坐标点击),并在快照里尽量把"可展开/可悬停"的控件标记出来;
  • 方向二:提供能执行任意页面 JS 的工具(类似 browser_eval/browser_exec),由模型在页面上下文里用 elementFromPoint + dispatchEvent(new MouseEvent('mouseover'...)) 等方式间接实现悬停与定点点击;
  • 方向三:考虑与"油猴脚本 / Tampermonkey"配合的方案,由脚本在页面注入透明操作按钮或暴露触发点,让这些按钮进入快照编号,从而模型间接触发原本需要悬停才能展现的操作。

再次感谢作者的工作,期待您的看法,也愿意协助测试!

Activity

  1. Lum1104 commented on Sep 10, 2026

    @Lum1104
    Member

    Hi,非常棒的 idea,我周末看看

  2. DightEndless commented on Oct 9, 2026

    @DightEndless

    作者好,以及 @naroah-u——这三点需求我们做了一版实现,先按最小可评审的粒度开了 PR #116(browser_screenshot,视口捕获 + 调试器降级)。

    为什么先提这个:截图是后续几项的共同底座。browser_hover 和 browser_click_at 都需要走 DevTools Protocol 的可信鼠标事件(dispatchEvent 造出来的不可信事件,很多框架不认),这层"调试器连接 + 协议输入"的基础设施正好由 PR #116 引入。底座落地后,hover 与坐标点击就是它之上的纯增量,可以拆成接下来两个小 PR。

    已经在本机验证并跑通的部分(真机 Chrome/Edge 实测):

    • browser_hover:悬停展开菜单——实测悬停后菜单 display 由 none 变 block;鼠标移动发两次,兼容只认 mouseenter 的菜单。
    • browser_click_at:协议层可信点击,isTrusted 为真,能点画布、"点击空白处关闭浮层"这类没有编号元素的目标;x/y 用视口比例。
    • 另外还有 browser_drag(滑块/排序列表)和 browser_batch(一次调用跑一串动作,省往返)。

    移植时踩到的两个坑,可能对你们有用:

    1. browser_upload 在 0.1.4 那条线里是坏的:bridge 在审批之后才发第二个消息传字节,而扩展侧没收到(四个派发点都没带 approvalId),于是无论用户怎么点都超时。修法是批准前就读好文件、把字节放进获批的那次派发里,这样新旧两侧任意组合都能工作。
    2. 标签绑定进入 lost 之后是个死胡同:所有工具回 "The controlled tab was closed" 且不弹提示,会话无法自愈。

    如果作者觉得方向合适,我们就按你们的代码结构把 hover 与坐标点击依次提上来(每个都带测试);如果更希望合在 PR #116 里,也可以改成那样。另外 #75 里提到的"方向二(执行页面 JS)"看到 #115 已经在做,我们就不重复了。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions