04 Uipath判断文件下载是否完成

前言:

事先申明,此贴适合小白,高手请绕道。

前阶段遇到一个业务,即机器人需要把一个报表从指定网站把文件下载下来,读取文件的内容并做后续操作。其它各部分的功能逻辑都处理完成了,但唯独文件下载搞不定,遇到要么是文件还没开始下载或者下载到中途时就去读取文件,要么是已经下载完成了很久,机器人浪费了很多时间。为这个问题也想了很久,在网络上也进行查找,没有找到好的方法,也可能是我搜索的方法不对。在耗死N多脑细胞之后,终于想出了一个处理办法,在这里分享给大家使用。

本次操作使用的是谷歌浏览器(Chrome,版本是80.0.3987.132(64 位)),Uipath版本是19.4.4。

需求:

  1. 能够设定等待的时间,不至于等待太久;
  2. 要保证文件能够下载完成;

思路:

通过对下载的文件进行监控,定时去查看文件是否存在,若是已经存在,则进行后续处理,若是不存在,则继续等待。根据业务需要设置等待的时长。因为项目中使用到的文件是客户项目中相对固定的文件,所以这个增加了许多的方便。

具体操作步骤:

  1. 打开Uipath,并新建流程WaitDownloadFile。


  1. 拖入一个“选取文件夹”控件,声明一个变量:strDownloadPath。类型是String。此文件夹用来选取下载文件的目录,若是对于自己的环境比较逻辑,可以直接在默认值中修改即可,我自己的下载目录是固定的,所以我把这个注释了。这样可以少了一步交互操作。如图


  1. 拖入一个“赋值”控件,并且声明一个变量为iLoop,类型是Int32,这个值是用来作为循环次数来使用的:


  1. 构造欲等待下载完成的文件全路径。拖入一个“赋值”控件,声明一个变量为strDownloadFile,类型是String:


在我遇到的这个项目中,他们的下载的文件名称格式是"工单表"+当日的年月日+".xlsx",即如“工单表20200311.xlsx”,“工单表20200301.xlsx”这种,所以我就把等待下载完成的文件设置为这个。

  1. 拖入一个“Do While 循环”控件,在控件中再插入一个“路径存在”的控件,“路径存在”的位置在“系统”à“文件”à“路径存在”。先把路径存在的参数进行配置:


此处要为“路径存在”设置输出变量“bFileExist”,“路径存在”可以对文件或者文件夹的存在进行判断,若是存在则bFileExist会被赋值为True,否则为False。

  1. 在“路径存在”下方拖入一个“IF条件”的控件,条件就是bFileExist。


对于此控件,作用是若是bFileExist为True则走左边,若是为False则走右边。

  1. 因我们在下载文件时没有必要一直查询文件是否已经存在,所以我们在文件不存在时,进行延时,又为了防止延时时间太久,所以一次延时1秒,格式为:00:00:01


  1. 在“IF条件”控件的后台,拖入一个“赋值”控件,这里给iLoop进行增长赋值,若是没有这一步,循环的次数就不会起作用。如图:


  1. 对“Do While 循环”控件的条件进行设置,这个也是重中之重。我在此设置的备件是:“bFileExist=False and iLoop < 100”,意思是若文件存在或者循环够100次就退出,反之就是文件不存在或者还没循环够100次继续循环。如图


  1. 最后,我们对退出的条件进行输出,以便知道什么原因退出,如图:


  1. 我跑了一下,结果如图:


图中的结果表示,文件没有存在,循环100次了,即等待了100秒。

结语:

若是大家在操作的过程中,遇到什么问题,可以在评论区给我留言。 也可以关注我的微信公众号:IT人的成长

https://img-blog.csdnimg.cn/20200316083301342.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2Jpbmp1bnk=,size_16,color_FFFFFF,t_70

猜你喜欢

转载自www.cnblogs.com/binjuny/p/12526233.html
04