等待元素具有属性
等待元素具有属性 用于在移动设备上等待某个 UI 元素出现指定属性,常用于等待按钮变为可用、元素状态切换完成等异步场景。它会在超时时间内反复检查,命中后返回结果并继续后续流程。
指令标识:MobileWaitForElementHasAttribute
指令类型:移动端指令
指令描述:等待手机当前屏幕中的特定 UI 元素具有属性值,返回结果(True 或 False),成功后继续执行
先选使用方式
Section titled “先选使用方式”工作流支持「可视化编排」和「代码编排」两种创建方式。等待元素具有属性 在两种方式里都能用,核心业务参数一致,区别主要是你通过界面配置,还是通过 Python 脚本配置。
| 方式 | 怎么用 | 适合人群 |
|---|---|---|
| 可视化编排(推荐先学) | 拖入「等待元素具有属性」节点,在右侧表单填写选择器和属性名 | 大多数用户,零代码,适合快速搭建和调试 |
| 代码编排(Python) | 在脚本中调用 bots.mobileWaitForElementHasAttribute(selector="...", attributeName="...") | 熟悉代码、需要复用脚本或批量生成流程的用户 |
第一次使用建议先用可视化编排跑通,再迁移到 Python 代码编排。下方「参数说明」同时给出界面字段和代码参数名,方便两种方式对应。
什么时候用?
Section titled “什么时候用?”- 等待提交按钮从禁用变为可用(
enabled),确认可点击后再操作。 - 等待元素状态从一种切换到另一种(如
checked、selected),确认转换完成。 - 等待输入框获得焦点(
focused)后再输入内容。 - 在异步加载场景中,等待数据就绪标识出现后再继续。
- 设备已连接,目标页面已加载完成。
- 元素选择器(如 XPath)能稳定定位到目标元素。
- 已确认要等待的属性名(如
clickable、enabled),不同平台/控件的可用属性名存在差异。 - 已根据页面响应速度规划好超时时间。
【图片占位 | command-mobilewaitforelementhasattribute-config】 截图内容建议: 截一张可视化编排页面,画布中选中「等待元素具有属性」节点,右侧属性面板展示「元素选择器」「属性名称」「超时时间」「将结果保存至」等区域。 标注建议: 用 ① 标出画布中的节点,用 ② 标出元素选择器,用 ③ 标出属性名称,用 ④ 标出超时时间与输出变量。 用户看完应能明白: 这个节点会在超时时间内等待元素出现指定属性,命中后继续执行。
可视化编排:从 0 到跑通
Section titled “可视化编排:从 0 到跑通”下面用一个常见场景演示:等待“我的”入口变为可点击后再操作。按 3 步即可跑起来:
- 在移动端流程中添加 等待元素具有属性 节点。
- 填写 元素选择器 和 属性名称(如
clickable),并设置输出变量名:
//*[@content-desc='我的']- 点击运行,确认元素具有该属性后流程继续,输出变量得到
true。
| 界面名称 | 代码属性名 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|---|
| 元素选择器 | selector | String | 是 | - | 元素定位方式,例如 XPath。 |
| 属性名称 | attributeName | String | 是 | - | 要等待的属性名称。 |
| 超时时间 | timeout | Integer | 否 | 10000 | 查找元素的最大等待时间(毫秒)。高级选项。 |
| 界面名称 | 代码属性名 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
| 将结果保存至 | outKey | Boolean | 否 | 输出指令的结果,True 表示元素具有该属性,False 表示不具有。 |
- 在超时时间内元素出现了指定属性,节点运行成功。
- 输出变量得到
true。 - 流程继续执行后续节点。
运行后你会看到(以上面场景为例):
- 输出变量得到
true(元素已具有clickable属性)。 - 运行日志显示等待成功。
【图片占位 | command-mobilewaitforelementhasattribute-success】 建议放一张运行成功截图:节点为成功状态,输出面板展示结果
true。图片用于说明这个节点跑通后用户应该看到什么。
| 现象 / 报错原文 | 可能原因 | 处理建议 |
|---|---|---|
| 等待超时报错并中止 | 超时时间内元素未出现该属性 | 适当增大 timeout,确认元素确实会出现该属性 |
| 报错找不到元素 | 选择器错误或元素未加载 | 校验选择器,先确认元素存在 |
| 属性名无效 | 平台/控件不支持该属性名 | 通过 pageSource 或开发者工具确认可用属性名 |
| 等待结果与预期不符 | 属性出现时机不稳定 | 结合页面加载等待节点,确保时序稳定 |
Python 代码编排
Section titled “Python 代码编排”代码编排以 Python 为主。运行上下文由代码编排模板创建,示例里只需要关注业务指令本身。
# 等待 "我的" 入口具有 clickable 属性,结果保存到 outputbots.mobileWaitForElementHasAttribute( selector="//*[@content-desc='我的']", attributeName="clickable", timeout=10000, outKey="output",)可视化表单里的「元素选择器」「属性名称」「超时时间」「将结果保存至」分别对应代码里的 selector、attributeName、timeout、outKey。如果你想在工作流中通过节点动态编排指令,可使用 执行指令(XML)节点。
Q1:返回值的含义是什么?
Section titled “Q1:返回值的含义是什么?”A: 返回值为 true 表示元素具有该属性,为 false 表示不具有。
Q2:不同平台的属性名有什么差异?
Section titled “Q2:不同平台的属性名有什么差异?”A: 不同平台/控件的可用属性名存在差异,请先通过 pageSource 或开发者工具确认。常见属性名:enabled、visible、checked、selected、focused 等。
Q3:超时时间如何设置?
Section titled “Q3:超时时间如何设置?”A: timeout 为大于 0 的整数,最大不超过 60000 毫秒,未配置时默认 10000 毫秒。
Q4:该指令何时使用?
Section titled “Q4:该指令何时使用?”A: 当需要等待元素出现特定属性(如 text、checked、content-desc、enabled 等)后再继续操作时使用本指令。