获取元素属性
获取元素属性 用于读取网页元素的 HTML 属性值。它适合提取页面上不一定直接显示的值,例如链接 href、图片 src、输入框 value、按钮状态、data-* 自定义属性等。
指令标识:GetElementAttribute
指令类型:网页指令
指令描述:获取指定页面元素的HTML属性值,支持所有标准HTML属性的获取
先选使用方式
Section titled “先选使用方式”工作流支持「可视化编排」和「代码编排」两种创建方式。获取元素属性 在两种方式里都能用,核心业务参数一致,区别主要是你通过界面配置,还是通过 Python 脚本配置。
| 方式 | 怎么用 | 适合人群 |
|---|---|---|
| 可视化编排(推荐先学) | 拖入「获取元素属性」节点,捕获元素、填写属性名、设置输出变量 | 大多数用户,零代码,适合快速搭建和调试 |
| 代码编排(Python) | 在脚本中调用 href = bots.getElementAttribute(selector="...", attributeName="href", outKey="detailUrl") | 熟悉代码、需要复用脚本或批量生成流程的用户 |
第一次使用建议先用可视化编排跑通,再迁移到 Python 代码编排。下方「参数说明」同时给出界面字段和代码参数名,方便两种方式对应。
什么时候用?
Section titled “什么时候用?”- 获取链接元素的
href,用于后续跳转或下载。 - 获取图片元素的
src,用于保存或校验图片地址。 - 获取输入框的
value,确认页面里实际填入了什么。 - 获取元素的
class、disabled、aria-*等状态属性。 - 获取
data-*自定义属性里的业务 ID。
- 目标元素已经出现,必要时先使用 等待元素存在。
- 你知道要读取的属性名。
- 如果目标在 iframe 中,需要配置 iframe 页面定位器。
- 如果属性不存在,输出会是空字符串。
可视化编排:从 0 到跑通
Section titled “可视化编排:从 0 到跑通”- 先让页面进入目标状态,并确认目标元素已经出现。
- 捕获要读取属性的元素。
- 在 属性名称 中填写要读取的属性,例如
href、src、value、class、data-id。 - 在 将结果保存至 中填写变量名,例如
attribute_value。 - 运行后查看变量值是否符合预期。
新手建议:如果页面上能直接看到文字,优先使用 获取文本;如果要读取链接、图片地址、输入框值或隐藏属性,再使用本指令。
一个提取链接地址的流程可以这样配置:
- 打开网页:进入目标页面。
- 等待元素存在:等待目标链接出现。
- 获取元素属性:读取链接的
href,保存为detail_url。 - 导航到 URL:使用
detail_url进入详情页。
| 界面名称 | 代码属性名 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|---|
| 元素选择器 | selector | String | 是 | - | 用于定位目标元素,不能为空,支持 CSS 选择器、XPath 等。建议从元素库捕获。 |
| 属性名称 | attributeName | String | 是 | - | 要读取的 HTML 属性名,不能为空,例如 href、src、value、class、data-id。 |
| iframe 页面定位器 | frameSelector | String | 否 | - | 高级参数,目标元素在 iframe 内时填写其 xpath。 |
| 查找元素高级配置 | findElementOptions | JSON | 否 | - | 高级参数,查找元素的高级配置,可在其中设置定位超时时间(timeout)等,以 JSON 配置。 |
| 界面名称 | 代码属性名 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
| 将结果保存至 | outKey | String | 建议填写 | 保存读取到的属性值。属性不存在或元素未找到时输出空字符串。 |
和“获取文本”的区别
Section titled “和“获取文本”的区别”| 指令 | 读取对象 | 典型用途 |
|---|---|---|
| 获取文本 | 页面上显示给用户看的文本 | 标题、状态、提示语、数量 |
| 获取元素属性 | 元素标签上的属性值 | href、src、value、data-*、class |
- 输出变量不是空值,或空值符合业务预期。
- 输出值和目标元素的属性一致。
- 如果读取
value,结果和输入框当前内容一致。 - 后续节点能使用该变量继续执行。
| 现象 | 可能原因 | 处理建议 |
|---|---|---|
| 输出为空 | 属性不存在、元素未找到或属性名写错 | 先确认元素存在,再检查属性名;元素未找到或属性不存在时都会输出空字符串 |
| 获取输入框值为空 | 读取时机太早或输入未生效 | 输入后增加等待或点击后再读取 |
| 读到的链接不完整 | 页面使用相对路径 | 后续使用前拼接站点域名,或读取页面 URL 作为基准 |
| 元素存在但读不到 | 目标在 iframe 或新窗口 | 配置 iframe,或先切换到正确页面 |
Python 代码编排
Section titled “Python 代码编排”代码编排以 Python 为主。运行上下文由代码编排模板创建,示例里只需要关注业务指令本身。
bots.openUrl(url="https://example.com")
# 读取元素属性,返回值即属性值href = bots.getElementAttribute( selector="//a[@class='detail-link']", attributeName="href", findElementOptions={"timeout": 5000}, outKey="detailUrl",)print(href)如果你想在工作流中通过节点动态编排指令,可使用 执行指令(XML)节点。
Q1:如果指定的属性不存在会怎样?
Section titled “Q1:如果指定的属性不存在会怎样?”A: 输出变量会得到空字符串。建议在后续流程中判断空值,避免把“没有属性”误认为成功。
Q2:该指令支持哪些常见属性?
Section titled “Q2:该指令支持哪些常见属性?”A: 支持所有标准HTML属性,常见的包括:
href:链接地址src:资源地址(图片、脚本等)value:输入框的值class:CSS类名id:元素IDtitle:标题提示data-*:自定义数据属性
Q3:如何获取元素的HTML内容?
Section titled “Q3:如何获取元素的HTML内容?”A: 可以使用 innerHTML 或 outerHTML 属性。innerHTML 返回元素内部的HTML内容,outerHTML 返回包含元素本身的完整HTML。
Q4:对于动态加载的元素应该注意什么?
Section titled “Q4:对于动态加载的元素应该注意什么?”A: 对于动态加载的页面元素,建议在「查找元素高级配置」(findElementOptions)中增大 timeout 等待时间,或在获取属性前先等待元素加载完成,避免获取失败。