跳转到内容

验证元素具有属性

验证元素具有属性 用于验证网页指定元素是否具有某个 HTML 属性(只判断属性是否存在,不校验属性值)。它常用于页面状态验证、元素属性检查和自动化测试断言等场景。

指令标识:VerifyElementHasAttribute
指令类型:网页指令
指令描述:验证指定页面元素是否具有某个HTML属性,返回验证结果

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

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

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

  • 检查按钮是否具有 disabled 属性,验证按钮的禁用状态。
  • 验证输入框是否具有 readonly 属性,确保处于只读状态。
  • 检查表单字段是否具有 required 属性,确保必填字段已标记。
  • 验证元素是否具有 classiddata-* 等属性。
  • 验证通过 JavaScript 动态添加的属性是否存在。
  • 目标元素已经出现,必要时先使用 等待元素存在
  • 你知道要检查的属性名(区分大小写,需用标准 HTML 属性名)。
  • 如果目标元素在 iframe 中,需要配置 iframe 页面定位器。
  • 明确验证失败时希望「输出结果继续」还是「抛出异常中断」。
验证元素具有属性

下面用一个常见场景演示:验证某个按钮是否具有 disabled 属性。按 4 步即可跑起来:

  1. 先用 打开网页 打开目标页面,并确认目标元素已出现。
  2. 在工作流画布中添加 验证元素具有属性 节点。
  3. 元素选择器 填写目标元素,在 属性名称 填写要检查的属性(如 disabled)。
  4. 将结果保存至 中填写变量名,点击运行后查看结果(true/false)。
界面名称代码属性名类型必填默认值说明
元素选择器selectorString-用于定位的页面元素选择器,不能为空,支持从元素库选择元素或手动填写 XPath 等定位器值。
属性名称attributeNameString-要检查的 HTML 属性名称,不能为空,eg:class、id、name、value、disabled、checked
False结果处理falseResultHandlingEnumOUTPUT_RESULT高级参数,验证结果为 False 时的处理方式:OUTPUT_RESULT(输出结果,默认)、THROW_EXCEPTION(抛出异常)。
iframe页面定位器frameSelectorString-高级参数,目标元素在 iframe 内时填写其 xpath,eg://html/iframe
查找元素高级配置findElementOptionsJSON-高级参数,查找元素的高级配置(JSON),可在其中设置定位超时时间(timeout,单位毫秒)等。
界面名称代码属性名类型必填说明
将结果保存至outKeyBoolean填写变量名称(eg:hasAttribute),保存验证结果(true/false)。
  • 运行日志中节点为成功状态。
  • 输出变量中为布尔值,符合对元素属性的预期判断。
  • 选择 OUTPUT_RESULT 时,验证为 False 也会输出结果并继续后续流程。
现象 / 报错原文可能原因处理建议
验证失败时流程中断falseResultHandling 设为 THROW_EXCEPTION如需继续流程,改为默认的 OUTPUT_RESULT
结果为 false 但属性应存在元素未找到或属性名大小写不符先确认元素存在,再核对属性名(区分大小写)
元素存在但读不到目标在 iframe 中配置 frameSelector 后重试
元素未及时出现定位时机太早findElementOptions 中增大 timeout,或先等待元素存在

代码编排以 Python 为主。运行上下文由代码编排模板创建,示例里只需要关注业务指令本身。

bots.openUrl(url="https://example.com")
# 验证元素是否具有 disabled 属性,返回值即布尔结果
# 该指令无独立的顶层超时参数,定位超时通过 findElementOptions 配置
result = bots.verifyElementHasAttribute(
selector="//*[@id='submit-button']",
attributeName="disabled",
findElementOptions={"timeout": 5000},
falseResultHandling="OUTPUT_RESULT",
outKey="result",
)
print(result)

可视化表单里的「元素选择器」「属性名称」「False结果处理」「查找元素高级配置」「将结果保存至」分别对应代码里的 selectorattributeNamefalseResultHandlingfindElementOptionsoutKey

如果你想在工作流中通过节点动态编排指令,可使用 执行指令(XML)节点。

Q1:该指令只验证属性是否存在吗?

Section titled “Q1:该指令只验证属性是否存在吗?”

A: 是的。该指令只验证属性是否存在,不验证属性的值。如需验证属性值,请使用 验证元素属性值

Q2:如果属性值为空字符串会怎样?

Section titled “Q2:如果属性值为空字符串会怎样?”

A: 即使属性值为空字符串,只要属性存在就返回 true。例如 <input disabled=""> 中的 disabled 属性存在但值为空,仍会返回 true

A: 如果元素不存在,返回 false。建议先使用 验证元素存在 确认元素存在。

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

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

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

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