2012-12-15 96 views
1

即时在网页上应用sikuli skript,以便它在页面加载时等待特定的按钮,当它出现时单击它,如果不是,它会等待一段时间,直到网页上出现按钮..我已经完成了以下脚本..它适用于2或3个循环,但之后程序停止并出现sikuli窗口..这里是我的代码。Sikuli如何用于等待按钮,直到它显示它,然后点击它?

同时存在( “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窗口出现而没有错误。感谢您的帮助

回答

2

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

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

0

等待( “IMG2”,30 * 60)

注意,这是不一样的as wait(“img2.png”,30 * 60)

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

0

不知道你是否已经解决了你的问题。

与你一样的效果始终是计时问题:由鼠标操作触发的事件发生得太快或太慢,因此下一个Sikuli脚本语句不会“看到”,您的工作流期望在屏幕上显示。如上所述,如果脚本在没有错误消息的情况下静静地结束,那么“while exists()”会给出NotFound条件并停止循环,因为img1在3秒后没有出现点击(“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" 
相关问题