Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 西库里脚本_Python_Sikuli - Fatal编程技术网

Python 西库里脚本

Python 西库里脚本,python,sikuli,Python,Sikuli,我想写一个sikuli脚本,如果“回收站”已满(第一次执行时),它可以清除“回收站”,并且需要检查图标是否为空并显示(回收站为空) 以下是我尝试的代码: 试试1- 虽然不存在(“RecycleBin-1.png”):-->“回收站已满”时的图像 右键单击(“RecycleBin-1.png”)-->“右键单击回收站”完整图标。 单击(“EmptyRecycle.png”)-->确认图像以删除所有项目 click("1406033619416.png") --> Image of "Recy

我想写一个sikuli脚本,如果“回收站”已满(第一次执行时),它可以清除“回收站”,并且需要检查图标是否为空并显示(回收站为空)

以下是我尝试的代码:

试试1- 虽然不存在(“RecycleBin-1.png”):-->“回收站已满”时的图像 右键单击(“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")
试试2- 虽然不存在(“RecycleBin-1.png”): 右键单击(“RecycleBin-1.png”) 单击(“EmptyRecycle.png”)

我的问题是,执行else之前的while循环(或)else部分在sikuli中执行。尽管回收站是空的(或)满的,但sikuli没有进行任何完整的分析,并根据需要执行它

请任何人在这方面帮助我,因为我对sikuli和python比较陌生

谢谢,
V.Prashanth

作为第一个选择,请转到Sikuli IDE中代码中显示图标图片的位置。尝试单击图片,然后转到“匹配预览”选项卡,将相似度从默认值.7更改为更高的值(.9或.95),然后查看这是否解决了问题

由于完整回收站和空回收站的图片非常相似,因此提高相似度会迫使Sikuli仅允许在与IDE中捕获的图片几乎相同(90%或95%匹配)时进行匹配,而不是返回任何仅70%匹配的匹配


如果这还不能解决问题,可能还有其他方法可以尝试,但我会先尝试。

autoKarma是正确的,你需要增加相似性;因为垃圾图标是静态的,我会一直推到99%。仅供参考,IDE会抑制下面的文本“.similor(0.###)”,但是如果您检查IDE在保存时生成的.py文件,它就会出现在那里

我对你的循环做了更多的修改,我对Sikuli的经验是,你最终会有很多…很多循环,以确保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()

对于“正在清空垃圾”图片,请注意不要在图片中看到进度条;只需找到一些可以安全引用的静态文本/菜单

我不太清楚你的问题。当回收站实际已满时,Sikuli是否与“空”回收站的图片不匹配?反之亦然(Sikuli在实际为空时与完整回收站的图片不匹配)?是的,即使我的“回收站”图标显示它为空,Sikuli仍尝试清除回收站并抛出错误。根据上面的代码,我有一个其他部分打印“回收站是空的”,这是根本没有发生。
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()