Sikuli如何用于等待按钮,直到它显示它然后单击它?
Posted
技术标签:
【中文标题】Sikuli如何用于等待按钮,直到它显示它然后单击它?【英文标题】:how can Sikuli be used for wait for the button untill it displayed it and then click on it? 【发布时间】:2012-12-15 15:42:04 【问题描述】:我在网页上应用 sikuli 脚本,这样当页面加载时它会等待特定按钮出现时单击它,如果没有,它会等待一段时间,直到按钮出现在网页上..我做了以下脚本..它可以正常工作 2 或 3 个循环,但之后程序停止并出现 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 窗口且没有错误。感谢您的帮助
【问题讨论】:
【参考方案1】:如果没有任何错误消息,就很难说出您的脚本为什么不起作用。但我最好的猜测是 while exists("img1.png")
返回 false 因为 img1.png 找不到。也许Sikuli找不到img1.png,因为页面还没有重新加载。尝试在while
语句的末尾添加wait(1)
。
或者尝试使用 Region 类的 onAppear
和 observe
方法:Region.observe()
【讨论】:
【参考方案2】:等待("img2",30*60)
注意这里和wait("img2.png",30*60)不一样
此外,对于调试,请尝试find("img2.png"),当它出现在屏幕上时,它会将鼠标悬停在 img2.png 上。如果 img2.png 出现后鼠标没有悬停在它上面,可以使用similar() 命令降低搜索的准确性。
【讨论】:
【参考方案3】:不确定您是否已经解决了问题。
像你这样的效果总是时间问题:由鼠标动作触发的事情要么发生得太快或太慢,所以下一个 Sikuli 脚本语句不会“看到”你的工作流程期望在屏幕上显示的内容。
所以正如上面 eostrows 已经提到的,如果脚本以静默方式结束并且没有错误消息,那么“while exists()”给出了一个 NotFound 条件并停止了循环,因为 img1 在之后的 3 秒内没有出现click("窗口关闭按钮.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"
【讨论】:
以上是关于Sikuli如何用于等待按钮,直到它显示它然后单击它?的主要内容,如果未能解决你的问题,请参考以下文章