无法将实例变量值发送到 sendkeys() 方法

Unable to send instance variable value to a sendkeys() method

现在我有一个声明为实例变量的 String 变量,我在一个方法中定义该变量的值,但是当我尝试在另一个方法中使用同一变量的值时,出现此错误:

要发送的密钥应该是非空的 CharSequence

现在我无法将第一个方法的 return 类型事件设置为字符串,因为该方法接受一个参数,因此没有用。

这是我的代码:

    String data;
    @Keyword
    def getFirstRecord(TestObject listData)
    {
        List<WebElement> firstRecord = WebUiCommonHelper.findWebElements(listData, 20);
        data = firstRecord.get(0).getText();
    }

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

我没有发表评论的名誉,所以在这里回答有可能。

请检查以下情况以了解您的代码是否可以解决问题

案例 1)正如 Nandan A 在评论中提到的,检查方法 2 是否在方法 1 之前被调用。 --> 如果是这种情况,请检查您的测试用例配置,看看为什么会这样。

情况 2) 如果按照您的代码预期在方法 1 之后调用方法 2。 --> 然后根据您的评论回复,我可以在方法 2 中看到 String 值仍然为空。因此,该框架可能正在创建您的 class 的新实例,以便每次执行您的 @Keyword 实现。您可以通过几种不同的方式解决这个问题。

  • 一种最简单的尝试方法是将 String 变量设为静态。这样,所有实例的值将保持相同,因为静态变量存储在 class 级别而不是 Java.
  • 中的实例级别
  • 另一个可以是:从第一种方法将值写入属性文件,然后从第二种方法读取相同的属性文件和相同的键值。

如果这对你有帮助,请告诉我。