今天遇到了一個(gè)小案例:有多個(gè)作業(yè)對(duì)象,數(shù)量不確定,每個(gè)作業(yè)對(duì)象執(zhí)行前會(huì)彈出確認(rèn)對(duì)話框,需要使用UiPath實(shí)現(xiàn)自動(dòng)化點(diǎn)擊OK按鈕進(jìn)行作業(yè),每個(gè)作業(yè)幾秒~二十秒不等,作業(yè)完成后會(huì)彈出下個(gè)作業(yè)的確認(rèn)對(duì)話框,需要再次自動(dòng)化點(diǎn)擊OK按鈕,以此類推,所有作業(yè)完成后會(huì)彈出執(zhí)行成功的對(duì)話框。
一開始我的實(shí)現(xiàn)方法:使用Element Exists對(duì)每次彈出的對(duì)話框進(jìn)行存在判斷(設(shè)置Timeout屬性為默認(rèn)30s),對(duì)象確認(rèn)對(duì)話框存在時(shí)自動(dòng)點(diǎn)擊OK按鈕,循環(huán)進(jìn)行下一輪存在判斷,直到如果30秒還沒找到,就去尋找執(zhí)行成功的對(duì)話框,找到了就證明作業(yè)執(zhí)行成功,如果沒找到就證明程序異常。
這樣的處理方式,就意味著最后一個(gè)作業(yè)對(duì)象執(zhí)行完成后,即使執(zhí)行成功對(duì)話框已經(jīng)彈出,還要等待30s才能結(jié)束程序,比較浪費(fèi)時(shí)間,而且感覺很low。
后來,我發(fā)現(xiàn)了Pick 和 Pick Branch這一對(duì)好兄弟,小問題迎刃而解。示例如圖:

同樣是while循環(huán)不變,使用Pick活動(dòng),拖入2個(gè)Pick Branch活動(dòng),在Pick Branch活動(dòng)的Trigger中判斷對(duì)話框是否存在。程序執(zhí)行到Pick活動(dòng)時(shí),會(huì)同時(shí)執(zhí)行各個(gè)Trigger,當(dāng)某個(gè)Trigger滿足條件時(shí),就會(huì)執(zhí)行當(dāng)前Pick Branch對(duì)應(yīng)的操作,其他Pick Branch對(duì)應(yīng)的操作則不會(huì)被執(zhí)行。
這樣程序執(zhí)行時(shí),就會(huì)同時(shí)判斷畫面上出現(xiàn)的是對(duì)象確認(rèn)對(duì)話框還是執(zhí)行成功對(duì)話框,如果是對(duì)象確認(rèn)對(duì)話框,則點(diǎn)擊OK按鈕,進(jìn)行下一輪判斷。如果是程序執(zhí)行完成對(duì)話框,則程序執(zhí)行完成,結(jié)束循環(huán),不需要額外的等待時(shí)間。
是不是很實(shí)用呀,有更好的方法歡迎一起交流討論~
小竅門:如果Pick活動(dòng)中的每個(gè)Pick Branch的Trigger都不滿足怎么辦?-->可以再追加一個(gè)Pick Branch,在Trigger中拖入Delay活動(dòng),設(shè)定相應(yīng)時(shí)間,該時(shí)間間隔后如果其他Trigger還是不滿足,則會(huì)執(zhí)行該P(yáng)ick Branch中對(duì)應(yīng)的操作。