带Region参数的Sikuli Jython函数无法运行,求正确实现方式
解决Sikuli中wait+click封装函数的参数报错问题
首先明确问题:你之前的函数报错是因为没区分全局Sikuli函数和Region对象的实例方法——全局的wait()和click()只接受图像作为参数,直接传Region会触发参数不匹配错误。
下面是两种正确的封装方式:
1. 基础版(默认操作整个屏幕)
如果不需要限定操作区域,直接封装全局的等待和点击逻辑:
def wcl(target_img): # 等待目标图像出现,可添加超时时间,例如 wait(target_img, 15) wait(target_img) # 点击目标图像 click(target_img)
调用示例:
# 直接传入IDE中的图像缩略图 wcl(img_button_login)
2. 支持Region参数的进阶版
如果需要在指定区域内执行等待和点击,函数需要判断是否传入Region对象,调用对应实例方法:
def wcl(target_img, region=None): if region: # 用传入的Region对象执行等待和点击 region.wait(target_img) region.click(target_img) else: # 无Region参数时,使用全局屏幕操作 wait(target_img) click(target_img)
调用示例:
# 先定义目标区域(左上角坐标x=100,y=100,宽500,高500) login_region = Region(100, 100, 500, 500) # 传入图像和Region对象 wcl(img_button_login, login_region)
可选:自定义超时时间
如果需要控制等待超时的时长,可以给函数添加timeout参数:
def wcl(target_img, region=None, timeout=30): if region: region.wait(target_img, timeout) region.click(target_img) else: wait(target_img, timeout) click(target_img)
调用时可自定义超时:
# 等待10秒,超时则抛出FindFailed异常 wcl(img_button_login, timeout=10)
内容的提问来源于stack exchange,提问作者setec
相关产品推荐
相关产品推荐

