我正在用Sikuli控制Windows GUI (Sikuli 1.1.0和Windows 7)。令人讨厌的是,向导有时需要很长时间才能加载向导的下一阶段,而在这些情况下,我的Sikuli脚本会崩溃,因为它不会等待它。在这些滞后的时间里,我得到了旋转窗口的圆圈作为鼠标。更糟糕的是,有时还会出现"Next“按钮(我正在与Sikuli一起等待的那个按钮),但是鼠标还没有准备好点击它,并且仍然处于旋转循环模式中,需要额外的20-30秒。我不想在向导的每个阶段指定30多个等待时间,因为这会不必要地、大规模地减慢脚本的执行速度;特别是因为大多数时候我都不需要它。
这里也有类似的报道:How do I get sikuli to wait until the mouse pointer changes from "busy" to "not busy?"
我想知道这个问题是否有新的进展?Sikuli能识别鼠标是否仍然处于旋转循环,没有响应模式,并会等到鼠标恢复正常?
发布于 2016-03-25 09:49:08
我不相信Sikuli支持这个功能,但是您可以在某种程度上解决这个问题。
使用exact
匹配,则必须循环,直到要键入的字段从空白字段更改为包含文本的字段(或任何您正在更改的元素)。一旦你发现了变化,你就知道事情不再被锁起来了。
但是基本上,您将被困在循环中,并在循环中执行操作,直到您检测到要执行的操作已经卡住为止。
下面是一个基本的类,您可以使用它来处理这个问题。
class Element:
def __init__(self, element, region):
self.element = element
self.region = region
def stateChanged(self):
if self.region.exists(Pattern(self.element).exact()):
return False
return True
gmailEmailField = Element("1458930208197.png", Region(438,239,388,342))
while not gmailEmailField.stateChanged():
wait(.5)
https://stackoverflow.com/questions/36058521
复制相似问题