【发布时间】:2015-11-14 08:43:52
【问题描述】:
几个小时前我刚刚开始使用 Python (Jython) 编码,我正在尝试使用 Sikuli IDE 自动化 Kik messenger(使用 Android 模拟器)。
我正在尝试创建一个区域观察器来扫描更改,如果进行了更改,它将检查是否找到任何命令。我不太确定自己在做什么,但这是我在网络和文档中的一些帮助下得到的代码:
cmdScanLoc = Region(Region(65,762,167,59))
def cmdHelp():
type("Help")
type(Key.ENTER)
cmdScanLoc.stopObserver()
def cmdPing():
type("Pong.")
type(Key.ENTER)
cmdScanLoc.stopObserver()
def changeDetected(event):
print("Change")
if cmdScanLoc.exists("1440090739688.png"):
cmdHelp()
elif cmdScanLoc.exists("1440090725124.png"):
cmdPing()
else:
print("No Command Found")
def startObserver():
cmdScanLoc.onChange(50,changeDetected)
cmdScanLoc.observe(10,background=False)
Settings.ObserveScanRate = 10
startObserver()
这是日志,输入 !ping:
Change
!help
[log] TYPE "Help"
[log] TYPE "#ENTER."
它似乎转到cmdHelp(),即使我输入了!ping。这怎么可能?它只是完全忽略了if-statement。
这是我正在扫描的区域的图像: http://i.imgur.com/QAP9OnV.png 以及我正在扫描的图像的图像: http://i.imgur.com/wXxphQN.png (此图中的代码不再准确,如您所见)
如果有人能用这个“命令扫描器”引导我朝着正确的方向前进,我将不胜感激,如果检测到某个命令,就会调用相应的函数。
非常感谢,如果这是一个非常愚蠢的问题,我很抱歉,我已经尝试了几个小时,查找 Sikuli 和 Python 的文档,但我无法让它工作......
【问题讨论】:
-
所以我一直在努力让这个东西工作很长时间,而且它似乎太不稳定了(它似乎完全忽略了
if声明,然后继续观察到更改时直接发送至cmdHelp()。)请有经验的python/jython 程序员指导我找到更好的方法来做这种事情。 :) 提前致谢! -
它可能不会忽略
if语句,它可能是 `cmdScanLoc.exists("1440090739688.png")' 的评估结果为真。 -
我不知道为什么我被否决了,因为我确实做了很多研究,这个问题对我来说似乎很清楚。我什至添加了图像以使其更清晰......如果反对我的人能给我建设性的批评,那就更好了。
-
@skyking 你能告诉我如何解决这个问题吗?说到 Python 和 Sikuli,我真的是个菜鸟。无法返回true,因为在我选择的区域中找不到图像,这就是为什么我很迷茫……是卡在内存中,还是?
-
说到 Sikuli,我可能更菜鸟,所以我的建议更多的是关于 python 部分。我仍然认为它返回 true,看到你可以打印结果,首先将它分配给一个变量(即
exists = cmdScanLoc.exists("1440090739688.png")),打印变量并最终在测试中使用它(即if exists:而不是if cmdScanLoc...)。如果它像我期望的那样打印为错误的东西,我会说这是一个 Sikuli 问题 - 在这方面我无法帮助你。
标签: python python-2.7 if-statement sikuli observers