跳转到内容

验证元素没有属性

验证元素没有属性 用于验证网页指定元素是否不具有某个 HTML 属性。返回 true 表示属性不存在,常用于校验按钮未被禁用、输入框可编辑、加载状态已移除等场景。

指令标识:VerifyElementNotHasAttribute
指令类型:网页指令
指令描述:验证指定页面元素是否不具有某个 HTML 属性

工作流支持「可视化编排」和「代码编排」两种创建方式。验证元素没有属性 在两种方式里都能用,核心业务参数一致,区别主要是你通过界面配置,还是通过 Python 脚本配置。

方式怎么用适合人群
可视化编排(推荐先学)拖入「验证元素没有属性」节点,捕获元素、填写属性名、设置输出变量大多数用户,零代码,适合快速搭建和调试
代码编排(Python)在脚本中调用 ok = bots.verifyElementNotHasAttribute(selector="...", attributeName="disabled", outKey="result")熟悉代码、需要复用脚本或批量生成流程的用户

第一次使用建议先用可视化编排跑通,再迁移到 Python 代码编排。下方「参数说明」同时给出界面字段和代码参数名,方便两种方式对应。

  • 检查按钮是否不具有 disabled 属性,确认按钮处于可用状态。
  • 验证输入框是否不具有 readonly 属性,确认可编辑。
  • 验证元素是否已移除加载中标记属性(如 data-loading)。
  • 根据元素是否不具有某属性来执行不同分支逻辑。
  • 目标元素已经出现,必要时先使用 等待元素存在
  • 你知道要检查的属性名(区分大小写)。
  • 如果目标在 iframe 中,需要配置 iframe 页面定位器。
  • 该指令为验证类,默认失败处理为「输出结果」(OUTPUT_RESULT),即验证不通过也继续流程;可改为「抛出异常」中断流程。
  1. 先打开目标网站,并确认目标元素已经出现。
  2. 在工作流画布中添加 验证元素没有属性 节点。
  3. 捕获或填写 元素选择器,在 属性名称 中填写要检查的属性,例如 disabled
  4. 将结果保存至 中填写变量名,例如 result
  5. 如需在不通过时中断流程,将 False结果处理 设为 THROW_EXCEPTION
  6. 运行后查看输出是 true 还是 false
验证元素没有属性
界面名称代码属性名类型必填默认值说明
元素选择器selectorString-用于定位的页面元素选择器,不能为空,支持从元素库选择或手动填写 XPath 等定位器值。
属性名称attributeNameString-要检查的 HTML 属性名称,不能为空,例如 classidnamevaluedisabledchecked
False结果处理falseResultHandlingEnumOUTPUT_RESULT高级参数。验证结果为 False 时的行为:OUTPUT_RESULT(输出结果继续流程)、THROW_EXCEPTION(抛出异常中断流程)。
iframe页面定位器frameSelectorString-高级参数。iframe 的 XPath,目标元素在 iframe 中时填写,例如 //html/iframe
查找元素高级配置findElementOptionsJSON-高级参数。查找元素的高级配置(JSON),可设置定位超时 timeout(单位毫秒,例如 {"timeout":5000},设为 0 表示不等待)等。
界面名称代码属性名类型必填说明
将结果保存至outKeyBoolean保存验证结果,返回 true 表示元素不具有该属性,false 表示具有该属性,例如变量名 result
  • 节点正常执行并输出布尔结果。
  • 元素不具有指定属性时输出 true,符合预期。
  • 后续节点能基于输出结果进行分支判断。
验证元素没有属性
现象可能原因处理建议
输出与预期相反属性名大小写写错使用标准 HTML 属性名,区分大小写,例如 disabled 而非 Disabled
元素不存在导致结果为 true元素未找到时也判定为「不具有属性」如需同时确认元素存在,先用 验证元素存在
验证不通过却中断了流程falseResultHandling 设为 THROW_EXCEPTION若希望继续执行,改为 OUTPUT_RESULT
元素在 iframe 中读不到未配置 iframe 定位器配置 frameSelector 指定 iframe

代码编排以 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 表示属性存在),两者是相反的逻辑。

A: 返回 true(因为不存在的元素当然不具有该属性)。如需同时验证元素存在,建议先使用 验证元素存在

A: 是的,属性名称区分大小写,必须使用标准的 HTML 属性名称,如 disabled 而不是 Disabled

A: 返回 true 表示元素不具有指定属性;返回 false 表示元素具有指定属性。

A: 该参数控制验证失败时的执行行为(括号内为需传入的参数值):

输出结果(OUTPUT_RESULT,默认):验证失败时输出 false 结果到 outKey,继续执行后续流程。

抛出异常(THROW_EXCEPTION):验证失败时抛出异常,中断当前流程执行。