ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

TagUI 高级特性实战指南:运行报告审计、异常处理、Datatable 批量自动化与 Python 集成

TagUI 高级特性实战指南:运行报告审计、异常处理、Datatable 批量自动化与 Python 集成 GUI 自动化浏览器控制工作流自动化【免费下载链接】TagUIFree RPA tool by AI Singapore项目地址https://gitcode.com/gh_mirrors/ta/TagUI点击查看免费下载导读本篇是 TagUI 官方文档 docs/advanced.rstAdvanced Concepts的完整实战化解读面向已能编写基础 flow 的开发者与 RPA 工程师。你将系统掌握六大进阶能力用-report选项把每次运行结果沉淀为可审计的 CSV 报告与 HTML 日志用本地—工作流—全局三层策略从容处理自动化中的各类异常用 Datatable 与对象仓库实现一次编写、多行数据批量执行和数据与流程解耦通过子流subflow模块化拆解大型工作流以及 turbo 加速、OCR 视觉自动化、Python 深度集成、调试日志与云端运行等高级技巧。文中所有结论均对照当前仓库源码给出依据可直接落地到你的真实业务中。保存运行结果-report选项与运行审计基本用法TagUI 默认只在终端输出运行日志文本形式。如果需要把每次运行的完整结果留存下来用于审计、复盘或集中管理可以在运行 flow 时追加-report简写-r选项tagui my_flow.tag -report加上该选项后TagUI 会做两件事生成一份 HTML 格式的日志由文本 log 转换而来便于在浏览器中分享查看将每次运行的摘要追加写入tagui/src/tagui_report.csv一行对应一次运行。CSV 报告中的字段tagui_report.csv中每次运行会记录一行包含以下信息字段含义运行序号#自动递增的条目编号WORKFLOW本次运行的 flow 文件名START TIME自动化开始的时间戳TIME TAKEN自动化结束的时间戳由此可推算耗时ERROR STATUS运行期间出现的错误信息若无错误则为SUCCESSLOG FILE本次运行对应的 HTML 日志文件链接USER ID运行 TagUI 进程的用户格式为工作组分\用户名Windows或组\用户Linux/macOS源码级实现依据上述行为在仓库中均有对应实现选项解析位于启动脚本 src/tagui脚本逐一检查命令行参数-report/-r命中后将其从参数列表中移除并置环境变量tagui_html_reporttrueWindows 版对应逻辑在 src/tagui.cmd 中。报告生成器是 src/tagui_report.php它从my_flow.log中提取START - automation started -、FINISH - automation finished -时间戳以及ERROR -错误信息写入tagui_report.csv表头为#,WORKFLOW,START TIME,TIME TAKEN,ERROR STATUS,LOG FILE,USER ID同时把文本 log 转成带样式的 HTML 文件并用正则清除 ANSI 颜色码错误状态显示为红色、开始/结束信息分别用蓝/绿色标注。若运行出错且自动截图已生成my_flow_error.pngHTML 日志还会内嵌该错误截图见 src/tagui_report.php。用户身份由 src/tagui 在运行结束时通过tagui_user_id$(id -gn)\\$(id -un)取得并调用php -q tagui_report.php $1 $tagui_user_id完成写入。需要注意的是-report生成的 CSV 路径固定为tagui/src/tagui_report.csv且每次生成的 HTML 日志会以_序号.html的形式保留多份副本避免被下一次运行覆盖见 src/tagui_report.php非常适合作为集中审计的原始数据源。处理异常与错误三种由浅入深的策略当自动化执行不按剧本走时TagUI 提供三层异常处理机制按粒度从细到粗排列。第一层本地错误处理Local Error Handling在 flow 内部用if条件针对特定场景做精细判断属于细粒度异常处理。例如判断某个 UI 元素是否缺失缺失则执行备选步骤。一个工作流中可以穿插多个这样的局部检查从而对每个风险点单独兜底。// 示例元素不存在时走备选路径 if not present(submit_button) echo submit button missing, trying alternative click alternative_submit第二层工作流错误处理Workflow Error Handling利用 shell 的退出码语义把多个 flow 串成出错则补救、成功则善后的链路Windows命令提示符示例call tagui flow.tag || tagui error.tag call tagui flow.tag tagui success.tagmacOS / Linux终端示例tagui flow.tag || tagui error.tag tagui flow.tag tagui success.tag其语义为||右侧的error.tag仅在flow.tag运行出错时执行右侧的success.tag仅在flow.tag成功时执行。TagUI 在检测到期望的 UI 元素缺失此时会自动截图保存或遇到其他未知错误时会主动抛出错误并让进程以非零状态退出从而触发||分支。第三层全局错误处理Global Error Handling通过配置 TagUI使每一次运行结束后都执行统一的特殊处理——例如把-report产生的数据和文件同步到指定文件夹或 API 端点用于集中的错误/成功判定典型场景是把所有自动化运行记录汇总到中央存储做审计。该策略作用于所有 TagUI flow粒度最粗但覆盖面最全。实战组合建议关键业务节点用本地处理做精细校验流程整体成败用工作流处理做分流配合 docs/advanced.rst 中-report的 HTML 日志留存证据团队级审计需求用全局处理统一收口。Datatable用 CSV 驱动批量自动化Datatable 本质上是 CSV 文件用于让同一个 flow 以不同输入反复运行多次是参数化批量执行的核心机制。Datatable 的形态一个名为trade_data.csv的 Datatable 示例# trade,username,password,pair,size,direction 1,Trade USDSGD,test_account,12345678,USDSGD,10000,BUY 2,Trade USDSGD,test_account,12345678,USDJPY,1000,SELL 3,Trade EURUSD,test_account,12345678,EURUSD,100000,BUY第一行是表头列名后续每行是一组输入数据。注意第一列可以是行号也可以是普通业务字段。运行方式tagui my_flow.tag trade_data.csvTagUI 会对 Datatable 中除表头外的每一行数据把my_flow.tag完整运行一遍。在 flow 内部trade、username、password、pair、size、direction等列名可以直接当作变量使用如同本地对象仓库中的变量其值自动取自当前运行对应的那一行。用iteration变量区分轮次当需要区分第几轮运行时使用内置变量iterationecho current iteration: iteration if iteration equals to 1 // go to login URL and do the login steps www.xero.com // do rest of the steps for every iteration典型用途是第一轮先登录之后每轮复用会话避免每行数据都重复登录。仓库中的真实示例示例 flow flows/samples/6_datatables.tag 展示了完整用法它把form_data.csv中每一行的firstname/lastname依次填入表单并点击提交。运行方式为tagui 6_datatables.tag form_data.csv配套数据文件是 flows/samples/form_data.csv。解析器 src/tagui_parse.php 通过环境变量custom_csv_file读取 Datatable逐行用fgetcsv解析随后在 src/tagui_parse.php 把每一列的列名清洗为合法变量名空格转下划线、剔除非法字符、数字开头自动加下划线前缀再以var 列名 值注入生成的 JavaScript 脚本具体取哪一列由环境变量tagui_data_set决定src/tagui_parse.php。提示若同时使用 Datatable 与本地/全局对象仓库解析器会对行数不足的列做补位处理src/tagui_parse.php确保变量都能取到值。对象仓库Object Repository数据与流程解耦对象仓库是可选的 CSV 文件用来存放 flow 中使用的变量含登录信息等个人数据。它帮助你把私人数据从 flow 中剥离出来并在多个 flow 之间共享公共信息一处修改、处处生效。本地仓库与全局仓库仓库文件路径作用范围本地对象仓库Local与 flow 同目录下的tagui_local.csv仅对当前 flow 生效全局对象仓库Globaltagui/src/tagui_global.csv对所有 flow 生效本地仓库的优先级高于全局仓库同名对象以本地定义为准。仓库文件格式object,definition email,user-email-textbox create account,btn btn--green btn-xl signup-btn第一列为对象名第二列为定义可以是元素标识、XPath、图片文件名等。flow 中的对象名会被直接替换为定义后再执行。例如假设user-email-textbox是某个网页文本输入框的标识符那么在 flow 中可以这样使用type email as my_emailemail.com仓库中的真实示例仓库自带的 flows/samples/tagui_local.csv 展示了丰富用法除普通对象email→quick_email、password→quick_pass外还支持把 XPath 存为对象facebook_link→//*[idprofile_full]//a甚至可以把一整条步骤存为对象click link→click facebook_link实现步骤级复用。解析器 src/tagui_parse.php 的加载逻辑印证了优先级规则先尝试加载tagui_local.csv路径为 flow 所在目录再加载tagui_global.csv两者按顺序合并进同一变量表后加载的同名条目不会覆盖先加载的本地条目从而保证本地优先。在 flow 内运行子流模块化你的 RPA面对复杂场景可以把一个大型工作流拆分为多个子流subflow文件甚至让子流再调用子流实现多层模块化。常见动机包括子流在多处复用、把特定步骤序列独立成文件便于组织、以及把 Python / JavaScript 代码与函数放入独立子流配合py begin/py finish代码块。基本调用tagui login_crm.tag子流也可以存放在子文件夹中// Windows 示例 tagui CRM\login.tag // Mac / Linux 示例 tagui CRM/login.tag父子流之间的变量传递父 flow 中定义的变量在子 flow 中可直接访问反之亦然// 此时 username 和 password 变量在 login.tag 中可用 username jennifer; password 12345678; tagui login.tag // 也可以分行定义变量 username jennifer password 12345678 tagui login.tag // 在 login.tag 中定义并回传变量给父 flow 使用 echo login_result注意子 flow 中通过echo 变量名输出并配合反引号包裹即可把值暴露给父 flow。用变量驱动多段子流设计可以把多个步骤序列合并进同一个子流由父 flow 设置action变量决定执行哪一段// crm_steps.tag if action equals to login do some steps do some more steps else if action equals to report do some steps do some more steps else if action equals to logout do some steps do some more steps else echo ERROR - action undefined父 flow 中只需action login再调用tagui crm_steps.tag即可按需执行对应分支。这是把多个入口收敛进一个子流的推荐模式。底层机制子流调用tagui步骤在解析阶段由 src/tagui_parse.php 的expand_intent()函数展开先把原始 flow 展开为.raw中间文件再对展开后的内容做后续解析最终生成可执行的 JavaScript。这也是下方调试日志中.raw文件的来源。Turbo 模式10 倍速运行谨慎使用用法tagui flow.tag -turbo # 或简写 tagui flow.tag -t启动脚本 src/tagui 会在参数列表任意位置识别-turbo/-t并设置环境变量tagui_turbo_modetrue解析器在 src/tagui_parse.php 依据该变量跳过正常速度所需的延迟如两次迭代之间重启浏览器等从而实现约 10 倍的执行速度。必须知道的代价大多数网站和桌面应用并不是为超人速度设计的。如果自动化运行速度超过它们设计与测试的上限很可能出现字段和数据没有正确填写、预期校验未触发、表单提交缺数据、甚至账号被封锁等。而且问题可能随机出现——在同一台电脑上正常、在另一台 CPU 速度不同的电脑上却失败。因此官方明确不推荐在生产环境默认使用 turbo 模式省下的是廉价的机器时间赔上的可能是昂贵的人工排查时间。适用场景务必先充分测试从应用/网页中做数据采集在能可靠承受超高速输入的 Web 应用上做数据录入聊天机器人作为后端为用户执行 RPA快速原型验证RPA 竞赛、黑客松等场景。官方建议在使用前针对你的具体用例做充分测试确认无副作用后再启用。视觉自动化技巧using ocr与图像定位用 OCR 按屏幕上的文字交互很多步骤支持在末尾追加using ocr或大写using OCR指示 TagUI 借助 OCR光学字符识别在屏幕上按文字定位 UI 元素。支持的步骤包括click、rclick、dclick、hover、type、select、read、snap、exist()、present()。click Submit using ocr if exist(Special Offer using ocr) click Add To Cart using OCR // select 步骤的多种组合用法 select Dress Color using OCR as Dark Blue using OCR select dress_color.png as Bright Pink using ocr select Dress Color using OCR as dark_black.png select dress_color.png as bright_white.png从源码看OCR 模式的识别位于 src/tagui.sikuli/tagui.py当定位符locator以using ocr结尾时TagUI 会剥离该后缀并改用 OCR 文本匹配方式在屏幕或截图中寻找目标。透明背景技巧如果把某个 UI 元素的.png图片背景用图像编辑器处理为 100% 透明TagUI 就能无视元素实际背景、稳定地命中目标常用于背景会变化的页面元素。反向技巧清空前景做动态 OCR反过来也可以把某个锚点元素如一个边框/框架附近的前景内容移除让空出来的区域用于read步骤 OCR 读取不断变化的内容——例如固定一个截图框持续读取其中动态变化的数字。在 flow 中编写 PythonTagUI 的py步骤可以在 flow 中直接执行 Python 代码底层通过命令行调用python因此需要单独安装 Python并确保python在 PATH 中。Python 的print()输出stdout会被捕获并存入 TagUI 变量py_result。单行py步骤py a1 py b2 py cab py print(c) echo py_resultpy begin/py finish代码块py begin a1 b2 cab print(c) py finish echo py_resultpy begin/py finish包裹的整段代码会被整体送入 Python 执行适合较长的代码段。解析器 src/tagui_parse.php 通过跟踪py begin/py finish标记来识别代码块边界并且支持在if/ 循环中以缩进方式嵌套py begin块见 src/tagui_parse.php 的缩进追踪逻辑。把 TagUI 变量传入 Pythonpy_step()使用辅助函数py_step()可以拼接动态变量传入 Pythonphone 1234567 py_step(phone phone) py print(phone) echo py_result name Donald py_step(name name ) py print(name) echo py_result注意字符串变量需要手动加引号包裹。v4/v5 版本发布说明src/media/v5.0_release.md还指出如果 Python 输出的是 JSON 数据TagUI 会自动生成py_json对象便于直接访问 JSON 元素否则py_json为 null。复杂数据传递用 JSON 桥梁当需要传递和返回多个变量时推荐用 JavaScript 与 Python 两端的 JSON 库把多个变量编码为 JSON 字符串互相传递TagUI 侧JavaScript 步骤构造 JSON →py_step()传入 Python → Python 处理后再print()输出 JSON → TagUI 通过py_json解析回变量。这是官方建议的多变量进出 Python的标准做法。创建日志文件进行深度调试当需要进阶排错时可以在tagui/src/目录下创建一个名为tagui_logging的空文件之后每次运行 flow 都会额外生成三个调试文件以my_flow为例文件内容my_flow.log逐步的执行输出逐步骤日志my_flow.js本次运行实际生成的 JavaScript 脚本my_flow.raw经过模块子流/翻译展开后的完整 flow 文本这三个文件分别对应执行日志、最终产物、解析中间态恰好覆盖了发生了什么、执行了什么、展开成什么三个排查维度若步骤结果异常查.log若想确认某一步被翻译成怎样的 JS 逻辑查.js若怀疑子流展开或语言翻译出错则查.raw。其中.js与.raw的生成路径可见于解析器 src/tagui_parse.php 与 src/tagui_parse.php。在云端运行 TagUI对于希望把自动化放到云上的使用者TagUI 提供多条路径浏览器 / 手机云端运行借助免费的 Google Cloud 环境可在浏览器标签页中运行 TagUI最多支持在浏览器不同标签页并发运行 5 个会话。Docker 化运行官方维护的openiap/nodered-taguiDocker 镜像使用edgetag 获取最新版本可供在任意云厂商上部署获得更强的控制力同时也有对应的 Dockerfile 可自行构建。Node-RED 云端OpenFlow可在免费的 Node-RED 实例OpenFlow 平台上运行Docker 镜像、Dockerfile 与 OpenFlow 云服务由作者 Allan Zimmermann 维护与赞助。这些云端方案适合需要无人值守 可伸缩的 RPA 场景例如定时批量任务或对外提供自动化服务在团队落地时可进一步结合前文的-report审计与全局错误处理构建云端执行 集中审计的完整体系。进阶能力速查表需求方案关键文件/命令运行结果审计留存-report/-rtagui my_flow.tag -report→ src/tagui_report.php精细异常兜底flow 内if条件—成败分流\|\|/链式子流tagui flow.tag \|\| tagui error.tag批量参数执行Datatable CSVtagui my_flow.tag trade_data.csv示例 flows/samples/6_datatables.tag数据与流程解耦本地/全局对象仓库tagui_local.csv、tagui/src/tagui_global.csv大型流程模块化子流 action变量tagui CRM/login.tag超高速执行-turbo/-t慎用tagui flow.tag -turbo按屏幕文字交互using ocr后缀支持 click/type/read 等步骤Python 深度集成py、py begin/finish、py_step()回传值存于py_result深度调试tagui/src/tagui_logging空文件生成.log/.js/.raw三件套云端运行Google Cloud / Docker / Node-RED浏览器并发最多 5 会话以上全部内容均以 docs/advanced.rst 为骨架并结合 src/tagui、src/tagui_report.php、src/tagui_parse.php、src/tagui_config.txt 等仓库源码与 flows/samples 下的真实示例验证可放心作为你在生产环境设计 TagUI 高级自动化方案的参考依据。赞分享GUI 自动化浏览器控制工作流自动化【免费下载链接】TagUIFree RPA tool by AI Singapore项目地址https://gitcode.com/gh_mirrors/ta/TagUI点击查看免费下载相关推荐PocketFlow高级特性批处理、并行与异步优化PocketFlow高级特性批处理、并行与异步优化 文章详细介绍了PocketFlow框架在大规模数据处理和并发执行优化方面的高级特性。主要内容包括Batch人工智能大模型AI Agent工作流自动化RAG终极指南3步快速上手Balena Etcher安全制作启动盘终极指南3步快速上手Balena Etcher安全制作启动盘 想要为Raspberry Pi安装系统或者制作Linux安装U盘但又担心操作复杂容易出错桌面应用开发工具智能硬件Universal Extractor 2命令行自动化终极指南批量处理与脚本集成实战Universal Extractor 2命令行自动化终极指南批量处理与脚本集成实战 想要实现文件提取的完全自动化吗Universal Extractor桌面应用上一篇解开《暗黑破坏神2》的 25 帧封印D2DX 安装与调校全攻略下一篇Wand-Enhancer 完整指南免费解锁WeMod高级功能手机远程控制游戏修改器创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表