我在 jython 上有 Sikuli 脚本,其目的是顺序等待出现并单击图像。
根据 Sikuli 的说法,可以使用
wait
和 click
函数来完成。两个函数都采用相同的参数 - 等待并单击的图像。
我正在使用 Sikuly IDE,其中图像被引用为缩略图。所以,我必须使用相同的缩略图两次才能实现我的目标。
我尝试创建一个以图像作为参数的函数:
def wcl(PSRML):
wait(PSRML, 10)
click(PSRML)
wcl(<Region image here>)
但它不起作用:
[error] script [ hs1 ] stopped with error in line 6
[error] java.lang.IllegalArgumentException ( java.lang.IllegalArgumentException: SikuliX: find, wait, exists: invalid parameter: R[2707,673 225x179]@S(0) )
[error] --- Traceback --- error source first
line: module ( function ) statement
65: Sikuli ( wait ) return SCREEN.wait(target, timeout)
2: main ( wcl ) wait(PSRML, 10)
6: main ( <module> ) wcl(Region(2707,673,225,179))
[error] --- Traceback --- end --------------
编写这个函数的正确方法是什么?
这是来自 SikuliX 的 RaiMan。
屏幕截图(您说的是缩略图)是要在屏幕上搜索的图像,是使用最左侧的工具栏按钮(截取屏幕截图)在 IDE 中拍摄的。
因此,您的
wait and click
最简单的版本是:
click(screenshot)
等待 3 秒(标准)图像出现,然后单击比赛的中间。
如果您需要等待更长的时间才能看到图像,那么您可以说:
click(wait(screenshot, time)) # time in seconds
这与:
相同wait(screenshot, time))
click() # which clicks the last match
因此无需两次拍摄相同的镜头。
在任何情况下,如果未找到图像并且脚本停止,您都会收到 FindFailed 异常。
我建议至少阅读文档以了解有关功能和可能性的想法(https://sikulix-2014.readthedocs.io/en/latest/index.html)。