关于等待的问题

打开系统,可能需要很长时间,时间不固定。如何保证我的程序可以正常运行。

1 Like

流程可Publish到机器人或Orchestrator服务器。在有人值守机器人界面按Start按钮,或用命令行运行UiRobot命令启动流程,可马上执行;无人值守机器人可通过Orchestrator服务器排程触发流程运行。

谢谢你的解答,可能是我问题没有表述明了,不好意思啊。我的意思是,当一个软件处理数据量很大的时候,会有较长的等待时间。这个时间是未知的,我该如何处理,能使我的程序不会退出,而是正常处理完所有流程。感谢解答。

有几个等待的活动可以在不同的场景下使用:Wait Element Vanish, Wait Image Vanish或Wait Attribute等,可设置较长的timeout时间。当相关元素消失或属性改变时,会停止等待继续流程。

谢谢你的回复,appear也可以设置timeout吗?我的需求是等待某个图片出现。目前似乎有默认值,长时间不出现,程序就自动结束了。感谢解答。

Properties Pane可以设置timeout, 默认的数值为30秒
另外亦要留意RepeatForever的设定, True的时候即使图像出现了也会继续等待

感谢回复。RepeatForever 为true的情况下,是在什么应用场景下的。timeout 是不是我设置的时间足够大,他就会一直处于等待状态。还有在什么情况下,我可以一直等待,直到这个图片出现才执行下一个操作。意思是这个等待的时间是不确定的,有没有类似的解决方案,谢谢。

可以自己写一个while得loop, 然后设置一个计数器, 在loop里面设置一个等待时间,并且计数器加一,并且判断你想要得东西是否出现。 如果计数器达到了某一个特别得大得数,还没出现,那估计就是程序挂了。。。

其实和那个on appear修改time out时间没什么区别。
另外对UiPath得on appear得repeat forever默认设置为true,表示不能理解。。。

假如你的流程是每当某一个图片出现就做一些事情, RepeatForever就可以设为True,
如果这只是整个流程中的一部分, RepeatForever就要设为False,不然就不能进行下一步骤。

Timeout不建议设定太大,因为即使系统十分缓慢,一个人正常使用时等得太久也会重启或是放弃。

默认值设为true,就会给第一次使用这个activity或者初学者得人造成很大得困扰。你们可以考虑把默认值改为false. 当需要得时候由他们自己设为true

谢谢回复。

你说的确实是一种解决方案。一直等待这个问题,有时候还真得考虑,程序挂了的问题。时间不确定,又要保证程序可以正常运行,不得不说,有些需求就是奇葩。

你有没有发现While循环里有个坑,居然不能用Break,还必须用条件结束循环。可能是我了解的比较少,哈哈。

RepeatForever 默认为true,估计是为了吸引人注意力的,让人知道有这个属性,哈哈。就算有类似场景,怎么结束这个activity呢?

前俩天用的时候,哪个图片都过去了,都到下一个场景了,为什么会报前一个场景的错误,很纳闷的。要不是之前看别人用过,鬼知道是这个属性的原因啊。

谢谢回复。

可能我们没遇到类似场景,所以感受不到。有一个疑问,他一直Repeat,那如何结束这个Repeat呢?

所以,这个Timeout,还得根据实际情况设置。

这个RepeatForever 和 哪个Retry Scope,是不是有类似的功能啊?

On Image Appear这个Activity是用来作监控, 如果只是想等待一个图片出现才继续後面的流程建议使用Find Image。

Retry Scope就是像一个微型的TryCatch, 在Action中的子流程会自动重试, 不过留意使用Retry Scope要自行处理异常情况。

while本身自己就是个条件判断, 当条件不符合后,就可以直接中断执行,所以不需要break

谢谢回复。

假如我所等待的条件一直未出现。同时又达到了最大次数,那我如何停止这个循环呢。是用未出现作为条件还是用最大次数作为条件呢。还是在循环体中,设置循环结束的条件呢。这一切,都不如在if条件内来个break,来的直接把。

谢谢回复。

嗯嗯,谢谢你的耐心解答和建议。我会好好考虑的,也会仔细研究Appear和Find Image的使用方法。那这个Appear,一旦开始就一直运行了吗?如何停止呢?

Retry Scope 里的流程不管执行成功或失败,后面的流程都会继续执行?是这个意思吗?还是我理解的有问题?

Appear加RepeatForever为True会一直运行, 除非出现exception, 所以要小心使用。

Retry Scope里的流程还是会报错,它提供一个简单方便的方法让人可以重试一部分流程, 而不用自己写for/while loop。例如可以用来按一个更新按钮,抽取几个值,直到出现"完成"的字样。

谢谢回复。

好吧,谢谢。原来Appear是这样用的啊,RepeatForever为False用法,并未用到其精华。为False的时候,是不是就相当于Find Image的功能啊。所以,Appear并不会自己退出,还是靠Exception退出。类似的场景,可以列举一二吗,谢谢。

所以,Retry Scope的功能就相当于While类似的循环了。这里的次数设置,如果是0,是不是就是不尝试啊。有没有类似,死循环的设置,就是无限次尝试,直到我需要的条件出现才终止。这样的话,哪个次数该怎么设置,谢谢啊。

while得条件可以是:未出现 且 小于最大次数

谢谢回复。

猜到你会这么说。好吧,你赢了,哈哈。我是Break重度依赖者,不喜欢在条件里写太多判断。失去了Break的While,我只能按照你说的这样写了,谢谢。