我想写一个sikuli脚本,可以清除“回收站”,如果它是满的(当第一次执行),并需要检查图标,如果它是空的,并显示(回收站是空的)
下面是我尝试过的代码:
Try 1- while not exists("RecycleBin-1.png"):--> Image when the“RecycleBin is full”rightClick("RecycleBin-1.png") -->“右键单击回收站”满图标。单击(“EmptyRecycle.png”) -->确认图片,删除所有项目。
click("1406033619416.png") --> Image of "Recycle bin" is empty
print ("Recycle bin has been emptied")
else:
while exists ("RecycleBin.png"):
print ("Recycle bin is already empty")Try 2- while not exists("RecycleBin-1.png"):rightClick("RecycleBin-1.png")点击(“EmptyRecycle.png”)
click("1406033619416.png")
print ("Recycle bin has been emptied")
else:
print ("Recycle bin is empty")我的问题是要么在else被执行之前的while循环被执行,要么else部分在回收站是空的(或者)满的情况下在sikuli中被执行,sikuli没有做任何完整的分析并在必要时执行它。
请任何人在这方面帮助我,因为我对sikuli和python相对较新。
谢谢,V.Prashanth
发布于 2014-08-06 01:12:11
首先,转到在Sikuli IDE中的代码中出现图标图片的位置。尝试单击图片,然后转到匹配预览选项卡,将相似度从默认的.7更改为更高的值(.9或.95),看看这是否解决了问题。
由于满回收站和空回收站的图片非常相似,因此提高相似度会迫使Sikuli仅在与您在IDE中捕获的图片几乎相同(90%或95%匹配)时才允许匹配,而不是在任何只有70%匹配的图片上返回匹配。
如果这还不能解决问题,可能还有其他方法可以尝试,但我会先尝试一下。
发布于 2015-07-21 21:11:00
autoKarma是对的,你需要增加相似度;因为垃圾桶图标是静态的,所以我会把它一直推到99%。仅供参考,集成开发环境不显示下面的文本".similar(0.##)“,但是如果您检查在保存时集成开发环境生成的.py文件,它将在那里。
我对你的循环进行了更多的修改,我的经验是你最终会使用many...many循环来确保Sikuli能够处理不可避免的模式识别中的奇怪之处。下面的代码是未经测试的代码,大体上反映了一个Mac,尽管至少我的代码在开始清除之前会弹出一个“你确定要删除这个吗”的警告,所以你的里程可能会有所不同。
def take_out_the_trash():
while exists(Pattern("Full_RecycleBin.png").similar(0.99)):
rightClick("Full_RecycleBin.png")
wait 1
while exists(Pattern("EmptyRecycle_Button.png").similar(0.99)):
click("EmptyRecycle_Button.png")
wait 1
while exists (Pattern("Emptying_trash_in_progress.png").similar(0.90)):
wait 2
take_out_the_trash()对于"Emptying_trash_in_progress“图片,请注意不要让进度条出现在图片中;只需找到一些可以安全引用的静态文本/菜单即可。
https://stackoverflow.com/questions/24890840
复制相似问题