如何使用Sikuli长时间等待按钮,中间可能还有一些维护任务?

问题描述 投票:3回答:4

我有一个网页,我正在等待按钮出现,当它出现时,我想点击它。该按钮位于计时器上,可能需要一个小时才能显示。此外,如果按钮花费的时间超过一定时间,我想移动鼠标(否则网站会自动将我注销)。

所以,等待按钮出现我设计了这个Sikuli脚本:

button = "button.png"

while(1):
    if exists(button):
        print("found it")
        click(button)
        break
    else:
        print("wait longer")
        wait(button,30*60)
        # do a regular task

print "all done!"

以上似乎没有功能。如果按钮在屏幕上,脚本将找到它...但是,如果它必须等待它将只是快速超时FindFailed异常(在click()上,即使屏幕上不存在按钮)。我考虑过写一个处理程序,但看起来有点矫枉过正。

我做错了什么,等待这么长时间的视觉事件的最佳方法是什么?

automation wait sikuli
4个回答
6
投票

对你有一些其他的想法......

 while(1):
 wait(Button, 30*60) # This will spinlock for 30 minutes for the button to appear
 if exists(Button):
     hover(Button) # Debug statement allowing user to see what Sikuli has matched to
     click (Button)
 else:
     mouseMove(Location(50,100))
     mouseMove(Location(50,200))

链接:


5
投票

也许Sikuli会识别看起来很像你的按钮,并尝试点击它。如果右键单击IDE中的按钮模式,则可以微调公差级别以进行识别。尝试在按钮周围精确切割图像,并将值增加到更精确。

我建议你阅读本教程 http://doc.sikuli.org/tutorials/surveillance/surveillance.html 并设置一个事件处理程序来管理按钮出现时 http://doc.sikuli.org/region.html#Region.onAppear http://doc.sikuli.org/region.html#observingvisualeventsinaregion 写的代码不多。

您可以在Sikuli的博客http://sikuli.org/blog/2011/08/15/sikuli-plays-angry-birds-on-google-games/中获得完整源代码的一个很好的例子

我想你可以设置你的处理程序并继续使用

观察(永远)


1
投票

如果你想在你等待图像时sikuli做东西我将使用onAppear(pic,函数)和观察(FOREVER,true)方法这是它的工作原理

event = Sikuli.event

def function(event):
    click(yourButton.png)

onAppear(picYourWaitingFor.png, function)
observe(FOREVER, true)

基本上这是做什么onAppear将不断扫描屏幕picYourWaitingFor.png。 sikuli继续执行单词,因此它在工作时扫描。在所述pic的外观上,它将跳转到你放下的函数作为onAppear的第二个参数。


0
投票

我有同样的问题。它不是要永远等待。观察也不会起作用,因为那确实会永远观察。想想只在60秒内检查一段时间的事件。如果没有发生,继续前进。这可能发生在一系列特定的事件中。如果图像未在60秒内出现,请继续执行另一系列。

wait(image,60)

...如果没有找到图像,将在60秒后崩溃,这在我的情况下根本不是想要的。

所以我做了这样的事情:

attempt = 1
count=0
while attempt:
     if exists(image):
         attempt=0
     else:
        count=count+1
        if count>60:
          attempt=0
        else:
           wait(1)

可能是更好的方式,并没有给出确切的时间,但方法不会崩溃脚本。

你也可以尝试:except it..应该更短。

© www.soinside.com 2019 - 2024. All rights reserved.