跳到主要内容

执行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代码
最长执行时间floatJS代码需要在该时间内return,单位:秒

上表中的 输入参数 是实际参数名,不是表头占位;生成 JSON 时需要写成 "输入参数": "[1,2,3]" 这样的键值。

指令输出参数

输出参数输出参数类型说明
JS执行结果AnyJS方法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脚本"
}

常见问题

参考 网页操作常见问题