从检测点到资源编排:华为云 KooLabs 云实验自动化的三次踩坑复盘

举报
yd_216153763 发表于 2026/10/29 04:28:04 2026/10/29
【摘要】 背景 过去两天我用自动化脚本跑华为云 KooLabs 的云实验,目标很简单:把"每周实践一个实验"这类重复任务交给脚本。结果踩了三个坑,每一个都不是"点不到按钮"这么简单。记录一下,避免别人重复。 坑一:进度不是看时长,而是看检测点 实验页面顶部有个"已完成 x%",我一度以为它统计的是停留时长或页

背景

过去两天我用自动化脚本跑华为云 KooLabs 的云实验,目标很简单:把"每周实践一个实验"这类重复任务交给脚本。结果踩了三个坑,每一个都不是"点不到按钮"这么简单。记录一下,避免别人重复。

坑一:进度不是看时长,而是看检测点

实验页面顶部有个"已完成 x%",我一度以为它统计的是停留时长或页面浏览。实际官方说明写得很清楚:平台会在任务完成后通过云服务侧检测刷新进度,而且步骤必须按手册逐步完成。

证据:我在沙箱 ECS 里用 SSH 把 Docker 装好、镜像拉下来、容器跑出 Hello from Docker!,进度纹丝不动;而后来在沙箱账号的控制台里老老实实点"创建虚拟私有云",建出 vpc-xxxx 之后,进度立刻从 0% 跳到 20%。

结论:能被检测的是云资源对象,不是机器内部状态。

坑二:按钮"点不到"往往是遮罩和视口

自动化最常遇到的"点了没反应",我这次遇到两种原因:

  1. 新手引导遮罩:实验台会弹"第一步:右键单击打开控制台"的引导层,它有全屏透明遮罩,把整页点击全吃掉;
  2. 元素在视口外:控制台页面高度约 889px,而按钮在 y=853 的位置,用固定坐标点击等于点在空白处。

解决办法很朴素:先 scrollIntoView({block:'center'}),重新取一次 getBoundingClientRect(),再按新坐标点击;同时把所有引导弹窗先点掉。

一个可复用的写法:

async function clickByText(page, text) {
  const pos = await page.evaluate((t) => {
    const els = [...document.querySelectorAll('button,a,span')]
      .filter(e => e.innerText.trim() === t && e.getBoundingClientRect().width > 0);
    if (!els.length) return null;
    els[els.length - 1].scrollIntoView({ block: 'center' });
    const r = els[els.length - 1].getBoundingClientRect();
    return { x: r.x + r.width / 2, y: r.y + r.height / 2, h: innerHeight };
  }, text);
  if (!pos || pos.y < 10 || pos.y > pos.h - 10) return false;
  await page.mouse.click(pos.x, pos.y);
  return true;
}

坑三:沙箱账号要用隔离会话,不要污染自己的登录态

实验会给一组临时 IAM 账号,官方建议用无痕窗口。用自动化时对应的做法是:从实验页的接口里拿到一次性联邦登录链接,在独立的浏览器上下文里打开,既能自动登录,又不会覆盖自己的会话。

另外还有一个镜像源的小细节:沙箱 ECS 出网受限,docker pull 直连 Docker Hub 会超时,换成华为 SWR 的镜像地址(swr.<region>.myhuaweicloud.com/ddn-k8s/docker.io/library/...)后秒级完成。

小结

自动化这类"平台任务"时,先把三件事问清楚:

  1. 任务的成功标准是谁判定的(人看、平台检测、还是资源状态);
  2. 页面有没有遮罩层,元素是否在视口内;
  3. 是否需要隔离身份,以及依赖的外部服务在这个网络里是否可达。

这三条想清楚,比多写几百行选择器有用得多。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。