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

sendkeys()方法无法接收实例变量值,报错待发送按键需为非空CharSequence

错误原因

Keys to send should be a not null CharSequence 报错的核心原因是调用sendKeys(data)时,传入的data变量为null。你的场景下触发这个问题通常有三个常见诱因:

  • 两个关键字方法的调用顺序错误:还没执行getFirstRecord()给data赋值,就先执行了setSearchData()
  • 实例变量生命周期问题:你定义的data是类的实例成员变量,Katalon每次调用@Keyword注解的方法时,可能会创建新的类实例,导致之前给data赋的值被重置为null
  • getFirstRecord()内部赋值失败:比如查找元素超时返回空列表、目标元素的getText()本身返回null,都会导致data没有被正常赋值

解决方案

方案1:将变量改为静态变量(最适配你的场景)

将data改为静态成员变量,保证该变量在类的所有实例中共享,不会因为新建实例丢失赋值,无需修改方法返回值即可解决问题,修改后的代码如下:

static String data; // 加static修饰
    @Keyword
    def getFirstRecord(TestObject listData)
    {
        List<WebElement> firstRecord = WebUiCommonHelper.findWebElements(listData, 20);
        if(!firstRecord.isEmpty()){
            String text = firstRecord.get(0).getText();
            data = text == null ? "" : text; // 规避getText返回null的情况
        }else{
            data = "";
            // 也可以在这里加日志输出,提示未找到目标元素
        }
    }

    @Keyword
    def setSearchData(TestObject obj)
    {
        WebElement txtSearchBox = WebUiCommonHelper.findWebElement(obj, 20);
        txtSearchBox.sendKeys(data == null ? "" : data);
    }

方案2:强制调用顺序+异常校验

如果不想用静态变量,按照以下规则调整即可:

  • 测试用例中必须先调用getFirstRecord(),再调用setSearchData(),不能颠倒顺序
  • 代码中增加非空校验,提前暴露问题:
String data;
    @Keyword
    def getFirstRecord(TestObject listData)
    {
        List<WebElement> firstRecord = WebUiCommonHelper.findWebElements(listData, 20);
        if(firstRecord.isEmpty()){
            throw new RuntimeException("未找到匹配的列表元素,无法给data赋值");
        }
        data = firstRecord.get(0).getText();
        if(data == null){
            data = "";
        }
    }

    @Keyword
    def setSearchData(TestObject obj)
    {
        if(data == null){
            throw new RuntimeException("data未初始化,请先调用getFirstRecord方法");
        }
        WebElement txtSearchBox = WebUiCommonHelper.findWebElement(obj, 20);
        txtSearchBox.sendKeys(data);
    }

内容的提问来源于stack exchange,提问作者enthusiasticCoder

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 22:27:04