官网下载链接:https://www.uibot.com.cn/
UiBot是一家机器人流程自动化服务平台,其产品包含创造者、劳动者、指挥官三大模块,用户可通过平台一键录制流程并自动生成机器人,支持可视化编程与专业模式、浏览器、桌面、SAP等多种控件抓取以及C、Lua、Python、.Net 扩展插件及第三方SDK接入,还可对业务与权限进行实时监控调整。
UiBot产品主要包含创造者、劳动者、指挥官、魔法师四大模块,为机器人的生产、执行、分配、智能化提供相应的工具和平台。
创造者即机器人开发工具,用于搭建流程自动化机器人。
劳动者即机器人运行工具,用于运行搭建好的机器人。
指挥官即控制中心,用于部署与管理多个机器人。
魔法师即AI能力平台,为机器人提供执行流程自动化所需的各种AI能力。
机器人的主要目标是在头歌页面上自动获取学生实训提交情况。
机器人将打开头歌页面,点击我的头像
查看课程,进入到《XX课程》。点击进入已截止
的实训项目,我的账号可查看到各位同学的实训通关情况。
为了实现对项目列表进行遍历,机器人在已截止
页面抓取所有项目名称,由于页面过长无法智能识别并抓取,且提取的数据无法直接转换为字符串。因此,将所有实训项目写入Excel后再读出,在网页搜索栏中依次进行搜索,以遍历所有实训。
在实训详情中将爬取所有同学的提交信息,输出到Excel表格中。一般而言,学生在实训项目截至后应当按时通关
,对于异常提交情况,如迟交通关
、未通关
、未开启
,在Excel中用不同颜色高亮展示,处理过程保留各种异常情况的学生数。
最后,将统计结果写入Excel单元格,抓住未做作业的那一批同学。
最后形成的Excel效果如图所示。
为了实现在流程图中的数据共享,本项目设置了如下的流程图变量,即全局变量。在运行完整项目时将创建并共享。关于全局变量的设置,可以参考报告中的问题解决-全局变量板块。
hWeb:标识机器人所打开的页面。在启动浏览器时产生,通过hWeb实现打开、关闭、切换浏览器及其标签页。
TrainName:实训名称,string型。记录所有已截止
的实训项目的名称,采用数据抓取的方式获得。
TrainNum:实训个数,int型。即TrainName的长度,表示共有多少个已截止
的实训需要进行数据采集。
ExcelProject:Excel表,用于记录所有实训名。由于抓取到的实训名称无法直接转为字符串,通过Excel表转换,并实现在搜索框中依次搜索内容。
Name:代表当前遍历到的实训名称,string型。从ExcelProject中依次获取,以作为搜索框中的输入。
CurProject:标记当前遍历到第几个实训,int型。在每次进入流程循环时+1,作为从ExcelProject获取Name的下标。
TrainInfo:学生们作业提交的表格信息。从每个实训的作业列表
中由数据抓取得到。
ExcelProject:Excel表,用于记录所有实训详情。抓取到的原始TrainInfo将存储到该Excel表中,并对表进行新建表、重命名表名、写入区域、删除列、高亮单元格等操作,对每个实训项目新建一个对应名称的工作表,处理数据并高亮异常提交情况。
在该流程中,机器人主要实现以下几个步骤
机器人将自动打开浏览器,访问网址https://www.educoder.net/
,由于在本机电脑上已经自动登录,所以无需再进行登录操作。点击我的头像
可直接进入到我的教学课堂内容。
选择《大学计算机基础》
点击课程后会默认进入实训作业
的页面,查看已截止
的项目。
由于之后希望遍历每一个实训项目并爬取数据,于是在该流程块中,希望获取全部实训名称,以便之后依次进入对应的实训页面。但是,直接从网页爬取的数据不是纯字符串,解决这个问题的方法见问题解决的数据抓取后获得纯字符串。
将所有实训名自动保存到实训详情.xlsx
。
CurProject
标识了当前遍历到第几个实训项目,初始值为0。这部分流程涉及到遍历,在流程块外部实现,流程块内实现该循环的具体内容,即进入第i个实训项目,爬取学生项目完成情况。涉及到以下几个步骤:
CurProject
代表当前实训项目的序号,进入该板块后+1,即从第1个项目开始遍历。
读取实训详情.xlsx
的Sheet1
工作表中的A&CurProject
单元格的数据,即实训项目名称,如第一个项目为冯诺伊xxxx
。
作业列表
在页面的搜索框中输入项目名称后回车,鼠标点击板块,进入该项目的作业列表
抓取页面数据,由于页面为表格形式,因此可以快速抓取。设置翻页页数,由于每个实训项目均为同样的学生参与,因此翻页数固定为4。在这里可能会出现数据抓取不完整的问题,解决方案可见问题解决的数据抓取不完整。
同时,为了打开页面时未处于第1页,可以设置页面滚动条,滑到页面选择,选择第1页后再爬取数据。这个操作的增加即可以防止页面错误,也可以防止数据抓取不完整的问题。
对于不同的实训任务,将在Excel中用不同的工作表进行存储,表名即为实训名,因此需要进行以下几个步骤。
此时会发现有许多列的数据并没有起到作用,因此设置删去这些列。
由于学生的提交情况分为按时通关
、迟交通关
、未通关
和未开启
四种情形,其中后三种被看作是异常情况,需要进行记录和统计,分别用Late、Unsub和Unstart来记录。
当数据完成写入后,遍历每一行数据,查看每位同学对应的作业状态
。根据作业状态(IsSubmit)进行条件判断,若为异常状态,则用对应单元格颜色和文字颜色高亮展示,并将对应变量的数值+1。
最后,在该工作表的J1:K4的位置分别列出各项异常情况的统计值。
由于要进入下一次循环,因此我们需要关闭当前标签页(即关闭第i个项目的提交详情界面)。
循环条件:CurProject>=TrainNum。其中CurProject代表当前遍历到的项目序号,TrainNum代表实训项目总数。
即对于每一个项目,都会进行搜索操作,搜索得到结果后,自动点击进入该实训项目,爬取学生的提交情况。在Excel中创建新的工作表,命名为该实训项目名称,并写入数据、删除无用数据,对异常情形进行高亮和统计操作,可视化展示。
在实训项目全部遍历完毕后,关闭标签页和表格,流程结束。
问题:
在流程图中,各个板块之间实现自己的主要功能,但是存在一些数据交互和共用的功能,如果在每个流程块输出部分变量,在下一个流程块接接收的话,变量传递会变得非常繁琐。观看旧版教学视频只发现了这种传递方式。【参考https://forum.uibot.com.cn/thread-4215.htm】
解决方案:
但是新版的开发者指南
里提供了全局变量、循环逻辑和流程块的一些相关操作。【参考初级开发者指南-流程和任务管理】,于是可以设置全局变量,板块内的操作会为变量附上新的值,方便流程间的数据传递。
问题:
在项目流程的页面登录和跳转的步骤中,会发现设置用Chrome浏览器打开指定链接https://www.educoder.net/
时,机器人能实现打开Chrome,但无法正确跳转页面。
解决方案:
需要安装Chrome插件,在首页
-工具
-Chrome扩展
中安装,并在浏览器设置
-扩展程序
中启用扩展程序。其他浏览器也可以对应安装扩展程序。
参考链接:https://forum.uibot.com.cn/thread-2098.htm
问题:
在项目流程的Excel记录项目名称和个数的步骤中,希望获取各实训项目的名称字符串,以实现遍历点击。但是会发现数据抓取的结果为列表,而每一项的输出也是一个列表。
爬取得到的数据如下图所示,并不是纯字符串,不符合预期。
解决方案:
我想到的方案是先将数据写入Excel。再对Excel内容进行读取。此时读取得到的字符串为纯字符串,而不是一个列表形式。
问题:
在项目流程的爬取第i个实训项目的步骤中抓取数据时,有时会发现数据抓取不完全。存入Excel表后如下图所示。
解决方案:
出现这种问题很大可能是页面延迟问题,数据未来得及加载就已经进入到下一个步骤,解决的关键在于设置延迟。可以通过以下方案解决
将前一个动作的执行后延时
时间增加,可设置为800-1000。
延时
插入延时
命令。设置动作运行完的等待时间。
问题:
在流程图绘制过程中,发现连接线常常很混乱,无法按照想要的方式进行连接。
解决方案:
按住Ctrl+鼠标左键
可以在连接线上加点,拖动点使得连接线合理。