验证元素没有属性
验证元素没有属性 用于验证网页指定元素是否不具有某个 HTML 属性。返回 true 表示属性不存在,常用于校验按钮未被禁用、输入框可编辑、加载状态已移除等场景。
指令标识:VerifyElementNotHasAttribute
指令类型:网页指令
指令描述:验证指定页面元素是否不具有某个 HTML 属性
先选使用方式
Section titled “先选使用方式”工作流支持「可视化编排」和「代码编排」两种创建方式。验证元素没有属性 在两种方式里都能用,核心业务参数一致,区别主要是你通过界面配置,还是通过 Python 脚本配置。
| 方式 | 怎么用 | 适合人群 |
|---|---|---|
| 可视化编排(推荐先学) | 拖入「验证元素没有属性」节点,捕获元素、填写属性名、设置输出变量 | 大多数用户,零代码,适合快速搭建和调试 |
| 代码编排(Python) | 在脚本中调用 ok = bots.verifyElementNotHasAttribute(selector="...", attributeName="disabled", outKey="result") | 熟悉代码、需要复用脚本或批量生成流程的用户 |
第一次使用建议先用可视化编排跑通,再迁移到 Python 代码编排。下方「参数说明」同时给出界面字段和代码参数名,方便两种方式对应。
什么时候用?
Section titled “什么时候用?”- 检查按钮是否不具有
disabled属性,确认按钮处于可用状态。 - 验证输入框是否不具有
readonly属性,确认可编辑。 - 验证元素是否已移除加载中标记属性(如
data-loading)。 - 根据元素是否不具有某属性来执行不同分支逻辑。
- 目标元素已经出现,必要时先使用 等待元素存在。
- 你知道要检查的属性名(区分大小写)。
- 如果目标在 iframe 中,需要配置 iframe 页面定位器。
- 该指令为验证类,默认失败处理为「输出结果」(
OUTPUT_RESULT),即验证不通过也继续流程;可改为「抛出异常」中断流程。
可视化编排:从 0 到跑通
Section titled “可视化编排:从 0 到跑通”- 先打开目标网站,并确认目标元素已经出现。
- 在工作流画布中添加 验证元素没有属性 节点。
- 捕获或填写 元素选择器,在 属性名称 中填写要检查的属性,例如
disabled。 - 在 将结果保存至 中填写变量名,例如
result。 - 如需在不通过时中断流程,将 False结果处理 设为
THROW_EXCEPTION。 - 运行后查看输出是
true还是false。
| 界面名称 | 代码属性名 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|---|
| 元素选择器 | selector | String | 是 | - | 用于定位的页面元素选择器,不能为空,支持从元素库选择或手动填写 XPath 等定位器值。 |
| 属性名称 | attributeName | String | 是 | - | 要检查的 HTML 属性名称,不能为空,例如 class、id、name、value、disabled、checked。 |
| False结果处理 | falseResultHandling | Enum | 否 | OUTPUT_RESULT | 高级参数。验证结果为 False 时的行为:OUTPUT_RESULT(输出结果继续流程)、THROW_EXCEPTION(抛出异常中断流程)。 |
| iframe页面定位器 | frameSelector | String | 否 | - | 高级参数。iframe 的 XPath,目标元素在 iframe 中时填写,例如 //html/iframe。 |
| 查找元素高级配置 | findElementOptions | JSON | 否 | - | 高级参数。查找元素的高级配置(JSON),可设置定位超时 timeout(单位毫秒,例如 {"timeout":5000},设为 0 表示不等待)等。 |
| 界面名称 | 代码属性名 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
| 将结果保存至 | outKey | Boolean | 是 | 保存验证结果,返回 true 表示元素不具有该属性,false 表示具有该属性,例如变量名 result。 |
- 节点正常执行并输出布尔结果。
- 元素不具有指定属性时输出
true,符合预期。 - 后续节点能基于输出结果进行分支判断。
| 现象 | 可能原因 | 处理建议 |
|---|---|---|
| 输出与预期相反 | 属性名大小写写错 | 使用标准 HTML 属性名,区分大小写,例如 disabled 而非 Disabled |
元素不存在导致结果为 true | 元素未找到时也判定为「不具有属性」 | 如需同时确认元素存在,先用 验证元素存在 |
| 验证不通过却中断了流程 | falseResultHandling 设为 THROW_EXCEPTION | 若希望继续执行,改为 OUTPUT_RESULT |
| 元素在 iframe 中读不到 | 未配置 iframe 定位器 | 配置 frameSelector 指定 iframe |
Python 代码编排
Section titled “Python 代码编排”代码编排以 Python 为主。运行上下文由代码编排模板创建,示例里只需要关注业务指令本身。
bots.openUrl(url="https://example.com")
# 验证元素是否不具有 disabled 属性,返回值即布尔结果ok = bots.verifyElementNotHasAttribute( selector="//*[@id='submit-button']", attributeName="disabled", findElementOptions={"timeout": 5000}, falseResultHandling="OUTPUT_RESULT", outKey="result",)print(ok)如果你想在工作流中通过节点动态编排指令,可使用 执行指令(XML)节点。
Q1:该指令与「验证元素具有属性」有什么区别?
Section titled “Q1:该指令与「验证元素具有属性」有什么区别?”A: 本指令验证元素不具有指定属性(返回 true 表示属性不存在),而 验证元素具有属性 验证元素具有指定属性(返回 true 表示属性存在),两者是相反的逻辑。
Q2:如果元素不存在会怎样?
Section titled “Q2:如果元素不存在会怎样?”A: 返回 true(因为不存在的元素当然不具有该属性)。如需同时验证元素存在,建议先使用 验证元素存在。
Q3:属性名称是否区分大小写?
Section titled “Q3:属性名称是否区分大小写?”A: 是的,属性名称区分大小写,必须使用标准的 HTML 属性名称,如 disabled 而不是 Disabled。
Q4:返回 true 表示什么?
Section titled “Q4:返回 true 表示什么?”A: 返回 true 表示元素不具有指定属性;返回 false 表示元素具有指定属性。
Q5:False结果处理如何使用?
Section titled “Q5:False结果处理如何使用?”A: 该参数控制验证失败时的执行行为(括号内为需传入的参数值):
输出结果(OUTPUT_RESULT,默认):验证失败时输出 false 结果到 outKey,继续执行后续流程。
抛出异常(THROW_EXCEPTION):验证失败时抛出异常,中断当前流程执行。