前言:
事先申明,此貼適合小白,高手請繞道。
前階段遇到一個業務,即機器人需要把一個報表從指定網站把文件下載下來,讀取文件的內容並做后續操作。其它各部分的功能邏輯都處理完成了,但唯獨文件下載搞不定,遇到要么是文件還沒開始下載或者下載到中途時就去讀取文件,要么是已經下載完成了很久,機器人浪費了很多時間。為這個問題也想了很久,在網絡上也進行查找,沒有找到好的方法,也可能是我搜索的方法不對。在耗死N多腦細胞之后,終於想出了一個處理辦法,在這里分享給大家使用。
本次操作使用的是谷歌瀏覽器(Chrome,版本是80.0.3987.132(64 位)),Uipath版本是19.4.4。
需求:
- 能夠設定等待的時間,不至於等待太久;
- 要保證文件能夠下載完成;
思路:
通過對下載的文件進行監控,定時去查看文件是否存在,若是已經存在,則進行后續處理,若是不存在,則繼續等待。根據業務需要設置等待的時長。因為項目中使用到的文件是客戶項目中相對固定的文件,所以這個增加了許多的方便。
具體操作步驟:
- 打開Uipath,並新建流程WaitDownloadFile。
- 拖入一個“選取文件夾”控件,聲明一個變量:strDownloadPath。類型是String。此文件夾用來選取下載文件的目錄,若是對於自己的環境比較邏輯,可以直接在默認值中修改即可,我自己的下載目錄是固定的,所以我把這個注釋了。這樣可以少了一步交互操作。如圖
- 拖入一個“賦值”控件,並且聲明一個變量為iLoop,類型是Int32,這個值是用來作為循環次數來使用的:
- 構造欲等待下載完成的文件全路徑。拖入一個“賦值”控件,聲明一個變量為strDownloadFile,類型是String:
在我遇到的這個項目中,他們的下載的文件名稱格式是"工單表"+當日的年月日+".xlsx",即如“工單表20200311.xlsx”,“工單表20200301.xlsx”這種,所以我就把等待下載完成的文件設置為這個。
- 拖入一個“Do While 循環”控件,在控件中再插入一個“路徑存在”的控件,“路徑存在”的位置在“系統”à“文件”à“路徑存在”。先把路徑存在的參數進行配置:
此處要為“路徑存在”設置輸出變量“bFileExist”,“路徑存在”可以對文件或者文件夾的存在進行判斷,若是存在則bFileExist會被賦值為True,否則為False。
- 在“路徑存在”下方拖入一個“IF條件”的控件,條件就是bFileExist。
對於此控件,作用是若是bFileExist為True則走左邊,若是為False則走右邊。
- 因我們在下載文件時沒有必要一直查詢文件是否已經存在,所以我們在文件不存在時,進行延時,又為了防止延時時間太久,所以一次延時1秒,格式為:00:00:01
- 在“IF條件”控件的后台,拖入一個“賦值”控件,這里給iLoop進行增長賦值,若是沒有這一步,循環的次數就不會起作用。如圖:
- 對“Do While 循環”控件的條件進行設置,這個也是重中之重。我在此設置的備件是:“bFileExist=False and iLoop < 100”,意思是若文件存在或者循環夠100次就退出,反之就是文件不存在或者還沒循環夠100次繼續循環。如圖
- 最后,我們對退出的條件進行輸出,以便知道什么原因退出,如圖:
- 我跑了一下,結果如圖:
圖中的結果表示,文件沒有存在,循環100次了,即等待了100秒。
結語:
若是大家在操作的過程中,遇到什么問題,可以在評論區給我留言。 也可以關注我的微信公眾號:IT人的成長