第 10 课 · 第七部分 网页自动化

网页自动化:让机器人操作网站

核心只有一个问题:机器人怎么"看见"你要点的那个按钮。

学习目标

预计用时:读课 35 分钟 + 上机 45 分钟 |  前置知识:第 3~6 课(变量、条件、循环、数组与字典——抓取结果是数组、元素特征全是"键 + 值") |  本课性质:操作 + 概念课,认证里"界面元素自动化"考点的集中区,也是第七部分的收官

知识地图

前面几课操作的是你电脑上的软件(Excel、Word、Outlook),本课第一次让机器人操作浏览器里的网页。它承接第 9 课 Email 打开的那条"联网线",也是第七部分(网络与网页自动化)的收官:从此机器人不只会用本机软件,还会替你上网办事。

本课在哪儿
第七部分收官。承第 9 课"联网",专门讲怎么让机器人操作网页。
重点
三条路怎么选;元素特征与"全部匹配才算存在";漏选与错选(认证高频)。
难点
把"会变的属性"和"有区分度的属性"分开看,在漏选与错选之间找平衡。
学完的标志
给一个陌生网站,你能选对元素,并独立修好一次真实的"漏选"。

一、网页自动化有三条路

同一个"让机器人上网干活"的需求,官方提供了三种实现方式。它们不是互相替代,而是各有各的脾气:[1]

① 界面元素自动化模拟人点网页:点按钮、填输入框。最贴近"人怎么操作",本课重点。
② 数据抓取一条命令把网页上成组的数据读成数组,可自动翻页。批量采数据用它。
③ HTTP 请求绕过浏览器,直接 Get获取数据 / Post提交表单。快,但要懂接口。
网页自动化三条路线:界面元素自动化、数据抓取、HTTP 请求;元素特征必须全部匹配才算存在 三条路线:像人一样操作,还是把数据拿走 登录、点按、填表选①;批量采数据选②;有接口求快选③。 ① 界面元素自动化 像人一样点网页 什么网站都能上 改版可能要重选元素 ② 数据抓取 一把“复制粘贴的钳子” 成组数据可自动翻页 只适合列表 / 表格 ③ HTTP 请求 直接给服务器打电话 不打开浏览器,最快 要懂接口,没接口用不了 元素特征 = 与条件(AND):全部匹配才算存在 aaname = 6800 + class = btn + type = button 全部匹配 → 元素存在 多一条可能漏选,少一条可能错选——这就是元素定位最常出问题的地方。
图 8 · 先按“要不要像人一样操作”选路线;元素特征是与条件,所有勾选属性都匹配才认为元素存在。

1.1 三条路各自的性格

路线它像什么强在哪弱在哪 / 前提
① 界面元素自动化一个坐在电脑前的人什么网站都能上,登录、点按、填表都行网页一改版就可能要重选元素
② 数据抓取一把"复制粘贴的钳子"一条命令把成组数据读成数组,还能自动翻页只适合"按列表/表格成组出现"的数据
③ HTTP 请求一条直接打给服务器的电话不打开浏览器,速度最快要懂接口地址和参数,网站没接口就用不了

为什么会有三条路?因为"机器人上网"可以站在两个不同的高度做事。① 是站在用户界面这一层——和人看到的一模一样,稳定、通用但不快;②③ 是站在数据这一层——绕开界面直接取数,快,但要求网页结构规整或网站提供接口。先想清楚"我是要像人一样操作,还是只要把数据拿走",路线自然就定了。

选型口诀:要"像人一样操作"选 ①;批量采数据选 ②;有接口、求速度选 ③。认证题里常给你一个场景问"最适合用哪条",照着这句判断即可。

二、一切从"界面元素"开始

鼠标底下每一个小图形部件——按钮、输入框、菜单项、表格单元格——都叫界面元素。元素还能嵌套:整个表格是一个元素,每一行是子元素,每个单元格是孙元素。[1]

2.1 元素与嵌套:像"文件夹里套文件夹"

把网页想成一层层的文件夹:最外层的页面是一个大盒子,里面装着表格、按钮、输入框;表格里又装着若干行;每一行里再装单元格。这种"盒子里还有盒子"的关系就叫嵌套。

嵌套关系示意
页面
 └─ 表格(父元素)
     ├─ 第 1 行(子元素)
     │   ├─ 单元格 A(孙元素)
     │   └─ 单元格 B(孙元素)
     └─ 第 2 行(子元素)
         └─ ……

为什么要先懂嵌套?因为后面修"错选"时,最常用的办法就是拿稳定的父元素或子元素当锚点,再顺着这棵树找到真正的目标。

官方特别提醒:如果你学过"控件",请先暂时忘掉它——"界面元素"和"控件"不完全一样,混用概念容易出错。

2.2 元素的"身份证":一组"属性 + 值"

机器人怎么认出一个元素?靠的不是位置(鼠标现在停在哪),而是这个元素身上的一组特征。点"目标"属性右侧的"纸和笔"编辑按钮,就会看到元素是由一行行的"属性 = 值"描述出来的——这就是元素的"身份证"。

目标编辑框里的元素特征(示意)
aaname = "6800"        ← 一个属性 + 一个值
……(其余属性行)

把上面每一行读成一句话:"这个元素的 aaname(名称)等于 6800"。一行就是一个条件。

核心规则(务必记牢):只有所有勾选的属性全部匹配,机器人才认为这个元素"存在"。就像找一个人:你说"他姓张、戴眼镜、穿红衣服",必须三条全中才算;只中两条,这个人就不算你要找的那个。后面所有的漏选、错选,全都是这条规则在起作用——多一个条件就可能漏选,少一个条件就可能错选。

记忆技巧:把"元素特征"记成"与条件"(AND),而不是"或条件"(OR)。匹配不是"命中任意一条就行",而是"条条都要对得上"。

三、有目标 vs 无目标:优先用有目标

网页命令分成两大家族。分清的标志,就看这条命令"心里有没有一个具体的目标元素"。

有目标的命令无目标的命令
例子点击目标、设置元素文本、获取元素文本模拟点击、模拟按键
运行前先查找元素是否存在,存在才操作鼠标/键盘在哪就操作哪,无法验证
找不到时反复查找,超过"超时时间"后报错并停止照样点下去,点错了也不知道

结论:优先用有目标命令,精准可控;只有实在找不到目标时,才退而用无目标命令。原课给的例子里,无目标命令叫"模拟点击""模拟按键"——名字里的"模拟"二字,正是它"只管动手、不管对象对不对"的写照。

为什么优先有目标?无目标命令像一个蒙着眼睛的人,你喊"点下去"它就点下去,鼠标底下恰好是什么它不管。有目标命令则先"睁眼确认":我要点的那个元素在不在?在,我才动手。这一句"在不在"的确认带来两个好处——① 点错的风险大幅下降;② 万一元素没加载出来,它会明确报错停下,你立刻知道出事了,而不是默默把流程跑歪。

考点提醒:认证喜欢问"应优先使用哪类命令",答案永远是有目标命令;"无目标命令什么时候用",答案是"实在选不到目标时才退而求其次"。

四、怎么选一个目标

在命令上点"未指定"右侧的瞄准器图标,会出现两个选项:[1]

4.1 从界面上选取

  1. 点击瞄准器:在命令的"目标"属性右侧点瞄准器图标,选"从界面上选取"。
  2. 页面被遮罩盖住:此时网页会被红边蓝底的一层遮罩盖住,鼠标移动到哪里,遮罩就跟到哪里。
  3. 让遮罩"恰好"盖住目标:慢慢移动,直到遮罩恰好覆盖你要的按钮/输入框,再单击左键。不要盖到外面的大盒子,也不要只盖到里面的小字。
  4. 看遮罩上方的提示:遮罩上方会显示元素类型(按钮 / 输入框…),帮你确认选对了类型。
  5. 确认:松手后元素被记进这条命令。建议立刻用 UI 分析器的高亮功能回看一眼,确认无误。

4.2 从界面库选择

选过的元素会自动存进界面库。下次要给别的命令指定同样的元素时,直接点"从界面库选择",挑出已经调好的那个即可,不必重新瞄一遍。

共享范围是否共享
同一流程内的不同流程块之间共享——选一次,多个流程块都能用
不同流程文件之间不共享——换一个流程就要重新选或另行导入

一句话记住共享范围:"流程内共享,流程间不共享"。认证常拿这句设坑,答成"全局共享"就错了。

什么时候改用界面库?同一个元素要被好几条命令用到时(比如搜索框既要"设置元素文本"又要"获取元素文本"),从界面库复用最省事,而且改一次属性、处处生效——维护起来也轻松。

五、核心考点:漏选与错选

元素选好了,运行时却可能出两种毛病。它们刚好是"全部匹配才算存在"这条规则的两面:

故障现象原因
漏选元素明明在,却报"找不到"特征里某个属性会变化(比如单元格文字 aaname="6800",一刷新就变)
错选找到了,但找到的是别的元素剔除属性后,兄弟元素的特征变得一模一样,于是找到第一个符合的

两种毛病的病根正好相反:条件太"死"→ 漏选;条件太"松"→ 错选。所以修元素不是"删得越多越保险",而是在稳定和区分度之间找平衡。

同一个元素,两个方向的翻车(示意)
条件太死 → 漏选:  aaname = "6800"        ← 数字天天变,今天变 7200 就找不到
条件太松 → 错选:  (只留一个所有兄弟都相同的属性)← 找到第一个就返回,可能是别人

5.1 三副解药

  1. 通配符 *:把会变的部分换成 *。例如 aaname 由 "姓名:张三" 改为 "姓名:*",既避开变化,又保留区分度。
  2. 取消勾选会变的属性——能减少漏选,但要小心增加错选。
  3. 用稳定的父/子元素做锚点,再用"获取父元素/获取子元素"找到真正的目标。

为什么通配符这么常用?因为它保留了两样东西:会变的那一小段放开了,不会变的固定前缀还留着当区分度。"姓名:*"既能匹配"姓名:张三",也能匹配"姓名:李四",还不会误伤"工号:*"——它是"放宽而不放空",比直接删掉整个属性细腻得多。

为什么官方强调"错选更危险":漏选时命令会抛异常、流程立刻停下,容易发现;错选时流程照样往下跑,错误悄无声息。所以删属性一定要谨慎。

三个高频易错点:

六、UI 分析器:排错的手术刀

UI 分析器是独立工具(首页"工具"标签、工具栏、元素属性里都有入口),主要干这些事:[1]

能力能帮你做什么
可视化树看清元素的父、子、兄弟关系——错选往往就发生在兄弟之间。
校验目标改完属性,直接验证还能不能找到该元素。
高亮显示元素确认找到的是不是你要的那个(在页面上把它闪出来)。
保存到界面库把调好的元素存起来,后续命令直接复用。

调元素的正确顺序:先在可视化树里看清目标跟兄弟有什么不同 → 选出有区分度的属性 → 用"校验目标"验证 → 用"高亮"肉眼确认 → 满意后"保存到界面库"。走完这一圈,元素基本就稳了。

七、浏览器:为什么建议用内置浏览器

命令:启动新的浏览器 打开一个;绑定浏览器 接管已打开的浏览器。类型可选 IE、Chrome、以及内置的来也浏览器(Laiye Browser)。[2]

浏览器要点
来也浏览器(推荐)无需装扩展;能选跨域网页元素;可直接调用页面内 JavaScript
Chrome必须安装并启用扩展(Laiye Native Message Plugin),否则只能选到整个页面
Firefox同样需要扩展
IE某些银行、政府网站只能用 IE

为什么浏览器还要装扩展?机器人要"看见"网页内部的一个个元素,需要在浏览器和 APA Creator 之间搭一座小桥,扩展就是这座桥。没装桥,机器人只能看到一整张页面,选不到里面具体的按钮和输入框——这也解释了为什么"在 Chrome 里只选到整个页面"往往就是扩展没装好。

环境一致性:同一个元素,在 Chrome 和 IE 上特征可能完全不同;不同系统/浏览器也会变。开发和运行尽量用同一套环境,少踩坑。

易错点:① Chrome 没装/没启用扩展就开始选元素,结果"选来选去只有整个页面";② 开发用 Chrome、投产用 IE,元素特征对不上,流程在别的电脑上失灵。动手前先确认"哪台机器、哪个浏览器、扩展装没装"三件事一致。

八、常用网页元素命令

命令用途
判断元素是否存在输出 True/False,用来等页面加载,替代死等延时
点击目标点击按钮、链接、单选项
设置元素文本 / 获取元素文本填输入框 / 读文字
设置 / 获取元素勾选单选框、多选框
等待元素等它出现或消失(比"延时"更稳)
获取子元素按"子元素层级"取一批元素(是数组),可循环处理

两条命令的搭配:"等待元素"负责等它出现,"判断元素是否存在"负责问它在不在,两者都比写死的"延时"更稳——网页加载快了不浪费时间,加载慢了也不会抢跑。获取子元素拿回的是数组,正好用第 6 课学的循环去逐条处理,这就是第 10 课和第 6 课接上的地方。

命令属性细节见 参考页:网页自动化速查;全部课程地图见 课程地图。

本课小结

必记要点

界面元素 网页上一个可操作部件 嵌套 元素套元素 元素特征 一组"属性 + 值" 有目标命令 先确认存在再操作 无目标命令 不校验,点到哪算哪 界面库 复用元素的仓库 漏选 元素在却找不到 错选 找到的却是别人 通配符 星号,匹配任意内容 UI 分析器 排错工具

自测

不看上面,凭记忆作答。答错不要紧,解析会告诉你为什么。

上机实践(回到 Windows)

准备(先做对三道选择题):① 用哪台电脑?② 用哪个浏览器?③ 扩展装了没?建议先用来也浏览器(免扩展、少踩坑)。记住:开发和运行用同一套环境。

任务 A(跑通一次搜索):用 启动新的浏览器 打开 www.bing.com,用"从界面上选取"给 设置元素文本 选搜索框、填 机器人流程自动化,再给 点击目标 选搜索按钮,运行。
预期:搜索框出现"机器人流程自动化",页面跳到搜索结果。常见报错:只选到"整个页面" → 多半是 Chrome 没装/没启用扩展。

任务 B(体验界面库):再拖一条 获取元素文本,点"从界面库选择",复用刚选的搜索框元素,读回你输入的文字。预期:输出 机器人流程自动化。要体会的:选一次、多处用,这就是界面库流程内共享的价值。

任务 C(故意制造漏选,重点):本题要你亲手把"漏选"请出来,再把它治好,前后对比才有感觉。步骤:

  1. 选一个会变的元素:在搜索结果里选一个标题(它的文字会随搜索词变化)。
  2. 看它现在长什么样:打开"目标"属性右侧的"纸和笔",记下当前所有属性行的属性名 + 值(建议截图,这就是"修好前")。
  3. 让它翻车:把搜索词改掉(比如换成 RPA)再运行一次。预期:报"找不到元素"——这就是漏选,因为原来写死的标题文字变了。
  4. 找病灶:对比两次运行,判断哪一行属性"也跟着变了"——那一行就是会变的属性。
  5. 上第一副解药:把会变的那段值改成通配符 *,只保留固定前缀。例如把"标题:完整的一句话"改成"标题:*"。
  6. 验证:用 UI 分析器"校验目标"确认能找回,再"高亮显示元素"肉眼看一眼是不是你要的那个。
  7. 再跑一次:换回原搜索词、再换新搜索词各跑一遍,都能找到即为修好。
  8. 交作业:把"修好前"的属性值和"修好后的属性值"两段对比发我,并告诉我你删/改了哪一行。

任务 D(别用死等):把流程里的固定延时改成 等待元素 或"判断元素是否存在 循环"。说说为什么这样更稳——加载快时省时间,加载慢时不抢跑。

任务 E(进阶辨析):如果你把通配符改得太宽(比如整行都换成 *),会发生什么?试着制造一次错选,观察它不会报错、只是安静地找错了元素——亲手体会一次"错选为什么更危险",再把你怎么判断的告诉我。

选不到元素、报错看不懂,把目标编辑框的属性截图 + 完整报错发我。

精读一手来源

本节首选:《开发者指南(第一辑)· 界面元素自动化》——完整讲了选取、目标编辑、漏选/错选、UI 分析器,认证必读。 读时重点盯三处:① "元素特征由属性组成、全部匹配才存在"这句总规则;② 通配符 * 的用法;③ UI 分析器四个功能。 配套练习页面:练习场 · 虚拟台账(专门用来练漏选/错选)。 浏览器相关命令见 《第一辑 · 软件自动化》。