@
rekulas 谢邀 (知乎体 🤣) 我的 RPA 是一款浏览器插件哈,它只在浏览器中运行,准确的说是 Browser RPA 或 Web RPA 。因此,它无法识别浏览器之外的 App ,至少目前是这样。
我就说说我知道哈,在网页里,鼠标点一下,就能识别内部元素,这个并不难。网页都是由 HTML 构建出来的,不管用什么 UI 框架 (React, Vue...),最终,出来的都是标准的 HTML ,所以,这个很好处理。稍微有点难度的是,页面嵌套 (iframe) 和 Shadow DOM 这两种情况,不过都是可解的。如果要做数据提取的话,还有一种情况也比较麻烦,就是自定义字体 (从源码里提取到的是字体编码,只有从视觉上才能看出是什么字),这个就需要先截图,再做 OCR 识别。
另一个就是事件处理,如:点击元素、滚动页面、输入文字 等,这些事件都比较好模拟。但,键盘事件就不好模拟,它不会触发 native 行为,比如:模拟按下 Ctrl + C ,它并不会真的去复制东西,除非网页程序特意处理了这个事件。这是浏览器的一些安全行为,网页端暂时无解。在插件里,可以申请 debugger 权限来做,不过这个权限会有一个醒目的提示:“xxx” started debugging this browser ,很烦,会让用户觉得插件很危险!考虑到键盘事件很少用到,也可以通过其它方法达到目的,比如,复制 & 粘贴 可以通过 Clipboard API 实现,所以,就做了些取舍,但这已足够了。
开源的 RPA ,可以看看 UI.Vision RPA 和 Automa ,其它的就不知道了。如果对我的 RPA 感兴趣,也可以来看看热闹哈,它叫:[Tapicker](
https://www.tapicker.com/)