Sikuli如何用于等待按钮,直到它显示它然后点击它?

时间:2012-12-15 15:42:05

标签: while-loop wait sikuli time-wait

我在网页上应用sikuli skript,以便在页面加载时等待特定按钮出现时它会点击它,如果没有等待特定时间,直到按钮出现在网页上...我已经完成了以下操作script ..it适用于2或3个循环,但在此之后程序停止并出现sikuli窗口..这是我的代码。

while exists(" img1.png"):

    click("img1.png")
    wait("img2",30*60)
    click("img2.png")
    click("window close button.png") // here it closes the 2nd popup tab after clicking on img2 then it return to its page

他等待img1按钮再次出现..所以         等待(" img1.png" 30 * 60)  //此脚本成功运行3-4次迭代,但随后停止并出现sikuli窗口且没有错误。谢谢你的帮助

3 个答案:

答案 0 :(得分:2)

没有任何错误消息,很难说出你的脚本无法正常工作的原因。但我最好的猜测是while exists("img1.png")返回false,因为无法找到img1.png。也许Sikuli找不到img1.png,因为页面还没有重新加载。尝试在wait(1)声明的末尾添加while

或者尝试使用区域类的onAppearobserve方法:Region.observe()

答案 1 :(得分:0)

  

等待( “IMG2”,30 * 60)

请注意,这与wait(“img2.png”,30 * 60)

不同

此外,对于调试,请尝试find(“img2.png”),当鼠标出现在屏幕上时,鼠标将悬停在img2.png上。如果鼠标在显示后没有悬停在img2.png上,则可以使用similar()命令降低搜索的准确性。

答案 2 :(得分:0)

不确定你是否已经解决了问题。

像你这样的效果总是计时问题:鼠标动作触发的事情要么太快也要太慢,所以下一个Sikuli Script声明不会“看到”,你的工作流程应该在屏幕上显示。

正如上面的eostrows已经提到的,如果脚本以无错误消息静默结束,那么“while exists()”给出NotFound条件并停止循环,因为img1在3秒后没有出现click(“window close button.png”)。 必须如此,因为循环内的所有其他操作都可以使用FindFailed异常工作或结束脚本。

您可以通过以下方式使工作流程更加健壮:

while exists("img1.png", 10): # wait max 10 secs
    click("img1.png")
    click(wait("img2.png",30*60)) # this saves one search for same image
    click("window close button.png")
else:
    print "img1 not seen after window close"