我在 WSL 里控制 Windows Chrome 的一次实战复盘(OpenClaw)

我在 WSL 里控制 Windows Chrome 的一次实战复盘(OpenClaw)

最近在做一套「WSL 环境下的浏览器自动化」实验,目标很明确: 在 WSL 中运行 OpenClaw ,去控制 Windows 主机上的 Chrome,并完成一次可复现的小任务。

这篇文章只记录我自己从失败到跑通的过程,命令、排错、结果都给出来,方便你按步骤复现。


一、实战目标

这次我用一个很具体的验收标准:

  1. 从 WSL 发起浏览器控制
  2. 在 Windows Chrome 打开 B 站搜索页
  3. 搜索 openclaw
  4. 提取前 10 条视频标题

二、环境说明

我的环境如下(供参考,不要求完全一致):

  • Windows 11(已安装 Chrome)
  • WSL2(Ubuntu)
  • OpenClaw CLI(可正常执行)
  • OpenClaw Gateway 已运行

先确认网关状态:

bash 复制代码
openclaw gateway status

看到 Runtime: running 再继续。


三、核心思路:用 Chrome Relay 连接 Windows Chrome

一开始我尝试过在 WSL 里直接起浏览器,结果很容易遇到 No supported browser found

后面换成 chrome-relay 方案后,链路稳定很多:

1)在 WSL 安装 Relay 扩展文件

bash 复制代码
openclaw browser extension install
openclaw browser extension path

2)在 Windows Chrome 加载扩展

打开 chrome://extensions → 开启开发者模式 → 加载已解压扩展。

路径一般类似:

text 复制代码
\\wsl$\Ubuntu\home\<你的用户名>\.openclaw\browser\chrome-extension

3)在扩展配置里填网关信息

  • 网关地址:ws://127.0.0.1:18789(按实际端口)
  • Token:你自己的 Gateway token

注意:token 是敏感信息,不要写进公开文章或截图里。


四、先做连通性验证

bash 复制代码
openclaw browser tabs --browser-profile chrome-relay --json

只要返回了非空 tabs,说明 WSL 与 Windows Chrome 的控制链路已打通。


五、执行任务:打开搜索页并抓前 10 条标题

1)打开 B 站搜索页

bash 复制代码
openclaw browser open "https://search.bilibili.com/all?keyword=openclaw" --browser-profile chrome-relay --json

2)提取标题

bash 复制代码
openclaw browser evaluate \
  --browser-profile chrome-relay \
  --fn '() => {
    const sels = [
      "h3.bili-video-card__info--tit",
      ".bili-video-card__info--tit",
      "a.title",
      "h3"
    ];

    let out = [];
    for (const s of sels) {
      const arr = [...document.querySelectorAll(s)]
        .map(e => e.textContent?.trim())
        .filter(Boolean);
      if (arr.length) {
        out = arr;
        break;
      }
    }

    const uniq = [...new Set(out.map(t => t.replace(/\s+/g, " ").trim()))]
      .filter(Boolean);

    return uniq.slice(0, 10);
  }' \
  --json

执行后会返回一个字符串数组,即前 10 条标题。


六、我踩过的 3 个坑(以及处理方式)

坑 1:No supported browser found

原因 :在 WSL 里走了本地浏览器启动路径。
处理 :改用 chrome-relay,控制 Windows 里的 Chrome。

坑 2:gateway timeout after 20000ms

原因 :网关连接瞬时抖动或页面切换太快。
处理

  1. tabs 确认页面存在
  2. 再执行 open / evaluate
  3. 必要时 openclaw gateway restart

坑 3:tab not found

原因 :目标页刷新或 targetId 变化。
处理 :重新获取 tabs 后再操作,不要复用旧 targetId。


七、复现检查清单

  • openclaw gateway status 显示 running
  • Chrome Relay 扩展已连接
  • tabs --browser-profile chrome-relay 返回非空
  • 能打开 B 站搜索页
  • 能提取前 10 条视频标题

以上都满足,说明这套流程已经跑通。


八、结论

对于「WSL 控制 Windows Chrome」这个场景,chrome-relay 是目前我测试下来最容易复现的一条路径。

如果你也在做跨环境自动化,这套方式值得优先试。

如果你希望,我下一篇可以补:

  • 带截图的完整操作版
  • 自动重试脚本版(减少 tab 抖动影响)
  • 面向新手的一键排错流程图
相关推荐
kyriewen2 小时前
我装了30多个Skill,给AI安排了8个岗位
前端·javascript·ai编程
风骏时光牛马2 小时前
大模型落地实践中的技术选型思路与方案对比
前端
IT_陈寒2 小时前
Vite打包时的静态资源坑,我帮你踩过了
前端·人工智能·后端
默_笙4 小时前
🔥 让 AI 帮我写完整个 Next.js 博客:框架就是 AI 的"上下文 buff"
前端·javascript
牧艺4 小时前
登录页还在用渐变?我一口气做了 5 个能摸的背景动效:吹蒲公英、滴墨染水、点熔岩闷裂
前端·canvas·交互设计
陆枫Larry4 小时前
状态机简介
前端
陆枫Larry4 小时前
一次登录问题排查:接口没错,错的是旧业务逻辑
前端
小小小小宇5 小时前
大模型打分与采样原理,以及 Pi Agent 核心原理
前端
一位正在转型AI全栈的前端工程师5 小时前
AI 全栈学习之旅 -Week 5:RAG 知识库问答系统:从零到生产级部署的全栈实践总结
前端·python
光影少年5 小时前
react navite 安卓iOS 打包、签名、环境区分
前端·react native·react.js