Sikuli可以观察鼠标指针的变化吗? (响应与无响应的鼠标)

时间:2016-03-17 10:57:18

标签: javascript python jython sikuli

我正在使用Sikuli(Sikuli 1.1.0和Windows 7)控制Windows GUI。令人讨厌的是,向导有时需要很长时间来加载向导的下一个阶段,在那些情况下我的Sikuli脚本崩溃,因为它不会等待它。在这些延迟时间内,我将旋转窗口圈作为鼠标。更糟糕的是,有时还会出现“下一个”按钮(我正在等待Sikuli的按钮),但是鼠标尚未准备好点击它并且仍然处于旋转圆圈模式额外20-30秒。 我不想在向导的每个阶段指定30s等待时间,因为这会不必要地大大减慢脚本执行速度;特别是因为大部分时间我都不需要它。

此处报告了类似的问题: How do I get sikuli to wait until the mouse pointer changes from "busy" to "not busy?"

我想知道这个问题是否有更新? Sikuli可以识别鼠标是否仍处于旋转圆圈无响应模式并等待鼠标恢复正常吗?

1 个答案:

答案 0 :(得分:1)

我不相信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)