1

我在网页上应用了一个 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窗口出现没有错误。感谢您的帮助

4

3 回答 3

2

如果没有任何错误消息,很难说出您的脚本为什么不起作用。但我最好的猜测是while exists("img1.png")返回 false 因为 img1.png 找不到。也许Sikuli找不到img1.png,因为页面还没有重新加载。尝试在语句wait(1)末尾添加一个。while

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

于 2012-12-16T17:56:55.977 回答
0

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

像你这样的效果总是时间问题:由鼠标动作触发的事情要么发生得太快,要么发生得太慢,所以下一个 Sikuli 脚本语句不会“看到”你的工作流程期望在屏幕上显示的内容。

因此,正如上面 eostrows 已经提到的,如果脚本以静默方式结束且没有错误消息,那么“while exists()”给出了一个 NotFound 条件并停止了循环,因为 img1 在 click(" 后 3 秒内没有出现窗口关闭按钮.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"
于 2012-12-20T08:57:16.540 回答
0

等待(“img2”,30*60)

请注意,这与 wait("img2.png",30*60) 不同

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

于 2012-12-16T18:05:47.533 回答