You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

带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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 21:12:37