执行JavaScript
执行JavaScript 用于在当前页面或指定元素上运行一段 JavaScript 脚本,并可把脚本返回值保存到变量。它适合标准指令难以覆盖的高级场景,例如读取复杂 DOM 数据、触发自定义事件、调用页面上的 JS 函数等。
指令标识:ExecuteJavascript
指令类型:网页指令
指令描述:在指定元素或页面上执行 JavaScript 脚本,可返回结果
先选使用方式
Section titled “先选使用方式”工作流支持「可视化编排」和「代码编排」两种创建方式。执行JavaScript 在两种方式里都能用,核心业务参数一致,区别主要是你通过界面配置,还是通过 Python 脚本配置。
| 方式 | 怎么用 | 适合人群 |
|---|---|---|
| 可视化编排(推荐先学) | 拖入「执行JavaScript」节点,填写脚本、可选元素选择器和输出变量 | 大多数用户,零代码,适合快速搭建和调试 |
| 代码编排(Python) | 在脚本中调用 bots.executeJavascript(expression="...", outKey="result") | 熟悉代码、需要复用脚本或批量生成流程的用户 |
第一次使用建议先用可视化编排跑通,再迁移到 Python 代码编排。下方「参数说明」同时给出界面字段和代码参数名,方便两种方式对应。
什么时候用?
Section titled “什么时候用?”- 标准指令读不到的数据,需要用 JS 直接从 DOM 或全局对象里取。
- 需要触发页面自定义事件、调用页面已有的 JS 方法。
- 需要对元素做特殊处理,例如移除遮罩、修改属性、滚动定位。
脚本会在浏览器页面环境里执行,能访问 document、window 等。如果填写了元素选择器,脚本的第一个参数就是该元素。
- 页面已经加载到脚本要操作的状态。
- 脚本语法正确,能在浏览器控制台单独跑通。
- 如果要拿返回值,记得配置输出变量;脚本要用
return返回结果。 - 如果脚本针对某个元素,确认元素已经出现,必要时先加等待节点。
可视化编排:从 0 到跑通
Section titled “可视化编排:从 0 到跑通”下面用一个常见场景演示:读取页面标题并保存为变量。
- 确认页面已经打开并加载完成。
- 添加 执行JavaScript 节点。
- 在 脚本 中填写要执行的代码,例如:
return document.title;- 在 将结果保存至 填写变量名,例如
pageTitle。 - 运行后查看变量值是否与页面标题一致。
| 界面名称 | 代码属性名 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|---|
| JavaScript脚本 | expression | String | 是 | - | 要执行的 JavaScript 代码。需要返回值时用 return 返回。 |
| 元素选择器 | selector | String | 否 | - | 填写后脚本作用于该元素,元素作为脚本第一个参数传入;为空则在整页上下文执行。 |
| 脚本入参 | params | String | 否 | - | 传给脚本的参数,支持 JSON 字符串或普通字符串,会作为脚本的入参传入。 |
| iframe 页面定位器 | frameSelector | String | 否 | - | 高级选项,目标元素在 iframe 内时填写。 |
| 查找元素高级配置 | findElementOptions | JSON | 否 | - | 高级选项,JSON 格式,可在其中配置查找元素的超时时间等参数(如 {"timeout": 5000}),单位毫秒。 |
| 界面名称 | 代码属性名 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
| 将结果保存至 | outKey | String | 否 | 保存脚本返回值。返回对象/数组会序列化为 JSON 字符串。未配置输出变量时,脚本即使有返回值也会被丢弃。 |
执行JavaScript节点运行结束后状态为成功。- 运行日志中没有参数缺失、超时或执行失败等错误。
- 如果配置了输出变量,后续节点能够读取到符合预期的结果。
- 后续节点能够继续执行,流程没有因为该节点异常中断。
| 现象 / 报错原文 | 可能原因 | 处理建议 |
|---|---|---|
| 拿不到返回值 | 没配置输出变量,或脚本没有 return | 配置「将结果保存至」,并在脚本里用 return 返回结果 |
| 日志提示脚本报错 | JS 语法错误或访问了不存在的对象 | 先在浏览器控制台单独运行脚本调通,再粘贴回来 |
| 配置了元素选择器但输出为空 | 元素没找到 | 先加等待节点确认元素出现;找不到元素时输出会被置空 |
返回值是 [object Object] 之类 | 返回了复杂对象 | 引擎会把对象序列化为 JSON 字符串,可在后续节点解析 |
Python 代码编排
Section titled “Python 代码编排”代码编排以 Python 为主。运行上下文由代码编排模板创建,示例里只需要关注业务指令本身。
# 在整页执行脚本并取返回值result = bots.executeJavascript( expression="return document.title;", outKey="pageTitle",)print(result)针对某个元素执行脚本(元素作为脚本第一个参数):
bots.executeJavascript( selector="//*[@id='app']/div[1]", expression="el => el.scrollIntoView();",)如果你想在工作流中通过节点动态编排指令,可使用 执行指令(XML)节点。
Q1:脚本怎么返回结果?
Section titled “Q1:脚本怎么返回结果?”A: 在脚本里用 return 返回,并在「将结果保存至」配置输出变量。如果返回的是对象或数组,会被序列化成 JSON 字符串保存。
Q2:填了元素选择器,脚本怎么拿到这个元素?
Section titled “Q2:填了元素选择器,脚本怎么拿到这个元素?”A: 脚本会以该元素作为第一个参数执行,可以写成箭头函数形式,例如 el => el.click()。
Q3:脚本能访问 window、document 吗?
Section titled “Q3:脚本能访问 window、document 吗?”A: 可以。脚本运行在页面环境里,能访问 window、document 等浏览器全局对象。