本章节提供的截图和数据都是测试数据,如有雷同实属巧合,特此声明
前言
在设计RPA流程中,除了对可见的页面进行UI自动化操作之外,还有一种看不见的操作就是执行JS;掌握了JS,在设计RPA流程时会有不一样的思路,不再受限制于UI页面和产品能力。
浏览器:谷歌浏览器
示例网址:https://www.baidu.com/
示例要求:以JS方式在百度网页输入关键词
本章节内容如下:
• JS使用的方式与区别
• JS在RPA设计流程的应用
一、JS使用的方式与区别
1、使用RPA的执行JS插件
(注:Chrome运行js不需要浏览器对象,IE需要)
2、使用开发工具运行JS
在谷歌浏览器上按F12,会弹出开发工具面板,然后点击Console,输入对应的脚本如上图,回车,就可以运行JS了(注:默认JS作用域是window.top)
3、使用地址栏运行JS-表达式
在地址栏里输入javascript:document.getElementById("kw").value="金蝶",点击回车,查看页面
Javascript:表达式:运行js,并且在当前页面返回运行结果,所以界面变成了“金蝶”二字
4、使用地址栏运行JS-alert
在地址栏里输入javascript:alert(document.getElementById("kw").value="金蝶"),点击回车,查看页面
此时页面正常,但是会弹出一个框,点击确定后,界面正常显示
由于Alert没有返回值,所以页面内容不会被覆盖
5、使用地址栏运行JS-匿名函数
在地址栏里输入javascript:(function(){var text= "金蝶";document.getElementById("kw ").value=text})()
回车,查看页面
运行正常
javascript:函数:运行js函数(可以是匿名函数)
如果函数没有return则页面不影响;
有return页面就会变成return的值,例如:javascript:(function(){return "金蝶"})()
6、使用地址栏运行JS-void
在地址栏里输入javascript:void(document.getElementById("kw").value="金蝶")
这个运行效果与“址栏运行JS-匿名函数”类似,只是void函数里面只能写一句js,不支持多句
总结对比如下
对比项 | 优点/缺点 |
RPA组件 | 优点:配置简单;缺点:功能受RPA与浏览器通讯的插件限制 |
开发工具F12 | 优点:JS代码兼容性好,不受任何产品限制;缺点:需要打开开发工具,流程不连贯 |
地址栏-表达式 | 优点:JS代码兼容性好;缺点:页面会被结果覆盖 |
地址栏-alert | 优点:JS代码兼容性好;缺点:页面会有一个弹框,流程不流畅 |
地址栏-匿名函数 | 优点:JS代码兼容性好,不受任何产品限制,适用于没有return的脚本,支持多句脚本;缺点:写法比较复杂 |
地址栏-void函数 | 优点:JS代码兼容性好;缺点:不支持多行脚本 |
(综上所述:除了RPA组件之外,地址栏-匿名函数是执行js的最佳方式)
二、JS在RPA设计流程的应用
1、使界面复杂的操作简单化:例如大表单操作,需要填写几十个字段,不需要这么多个活动组件,只需要1个js组件即可,稳定性和效率大大提升。
2、不受HTML元素表面属性影响:例如只读元素限制了输入
如上图,当日期为只读时,只能通过界面进行选择,这时所有的模拟键盘输入操作都会失效,只能使用设置文本或执行js(设置文本本质上也是执行js)
3、优化循环业务操作
Dom元素的点击实际上就是触发OnClick事件,当我们知道OnClick里定义的内容时,就可以直接通过获取OnClick的内容执行JS了。举个例子:
如上图,从查看按钮的HTML可以得到以下信息:点击查看按钮会调用一个叫detailSubmit的函数,那么我们可以先收集这个函数的信息,放到一个List里面(如果表格有翻页的话,也可以先把翻页后的数据收集完成后),最后统一处理点击查看后逻辑。
通过使用JS和队列模型,优化了原先固化的流程设计思路