执行JS脚本
指令说明
在指定的网页执行JS脚本。可以接收参数并获取JS返回的参数。输入、输出参数会自动序列化、反序列化,支持Promise
如果需要在指定的iframe执行JS代码可以指定该iframe中的任意一个元素。
高级设置中可以指定JS最长执行时间,如果配置的执行时长 < 实际执行时长会导致报错
指令输入参数
| 输入参数 | 输入参数类型 | 说明 |
|---|---|---|
| 网页对象 | WebPage | 在该网页执行JS代码 |
| 网页元素 | WebElement 或 str (捕获的元素UID,非元素名称,非ms-rpa-id) | 可选参数,默认Python None,在该元素所属的iframe中执行JS代码,可以选择捕获的网页元素也可以选择获取网页元素、获取网页相似元素、获取网页关联元素等指令获取到网页元素 |
| 输入参数 | Python表达式 | 传给网页JS方法的参数,必须是Python表达式,可以是Python字面量。会自动序列化成json,然后再反序列化成js对象,默认Python None |
| JS代码 | JS代码 | 待执行的JS代码 |
| 最长执行时间 | float | JS代码需要在该时间内return,单位:秒 |
上表中的 输入参数 是实际参数名,不是表头占位;生成 JSON 时需要写成 "输入参数": "[1,2,3]" 这样的键值。
指令输出参数
| 输出参数 | 输出参数类型 | 说明 |
|---|---|---|
| JS执行结果 | Any | JS方法return值,会自动序列化、反序列化成Python对象 |
类型定义参考
JS代码模板
async function(htmlElement, param) {
//在此处编写您的Javascript代码
//htmlElement是输入参数中的 网页元素 对应的JS HTMLElement对象
//param是输入参数,Python对象会先序列化成JSON,然后再反序列化成JS的param参数
//返回值可以是对象,支持返回Promise
return null
}
提示
需要先安装曲辕RPA浏览器插件。
示例1
查询淘宝首页销量排行

js代码
async function (htmlElement, param) {
const goods = []
const elements = document.querySelectorAll('.tb-pick-content-item')
for (let element of elements) {
const name = element.querySelector('.info-wrapper').innerText
const price = parseInt(element.querySelector(".price-value").innerText)
const count = parseInt(element.querySelector(".month-sale").innerText)
goods.push({
name,
price,
count
})
}
return goods
}
示例2
在图片-1元素所属的iframe执行js代码从而隐藏该元素

示例3
json中的in.输入参数 是 Python表达式。
in.JS代码 是JS代码,无需再次使用引号包裹。
- 正确示例:
"JS代码": "async function(htmlElement, param) { return param }" - 错误示例:
"JS代码": "'async function(htmlElement, param) { return param }'"
{
"children": [],
"in": {
"网页对象": "webPage",
"网页元素": "'0f09d6d5-e7c7-4952-910f-5486263be36d'",
"输入参数": "[1,2,3]",
"JS代码": "async function(htmlElement, param) { return param }",
"最长执行时间": "10"
},
"out": {
"JS执行结果": "jsResult"
},
"ins": "执行JS脚本"
}
常见问题
参考 网页操作常见问题