Java Webdriver在离开此文本框之前检查文本框值

Java Webdriver在离开此文本框之前检查文本框值,java,webdriver,selenium-webdriver,Java,Webdriver,Selenium Webdriver,我使用我创建的通用方法在我的所有页面对象中键入文本 代码如下: public void clearAndSetValue(WebElement field, String text) { field.clear(); field.click(); field.sendKeys(Keys.chord(Keys.CONTROL, "a"), text); } 现在需要确保这个方法总是检查文本框中是否有我传递给该方法的参数文本 因此,我将该方法

我使用我创建的通用方法在我的所有页面对象中键入文本

代码如下:

  public void clearAndSetValue(WebElement field, String text) {
        field.clear();
        field.click();
        field.sendKeys(Keys.chord(Keys.CONTROL, "a"), text);
  }
现在需要确保这个方法总是检查文本框中是否有我传递给该方法的参数文本

因此,我将该方法细化为:

  public void clearAndSetValue(WebElement field, String text) {
    if (field.getText().equals("")) {
        field.clear();
        field.click();
        field.sendKeys(Keys.chord(Keys.CONTROL, "a"), text);
    }
  }
我的目的是确保字段值等于我希望它键入的任何值,否则不要离开此方法

此方法不作为字段使用。当循环中存在该方法键入的字符串时,getText()始终返回空。我猜是因为getText()只返回字段的原始状态

此方法已被许多其他方法使用,因此我不想再向此方法传递任何参数

有办法做到这一点吗


谢谢。

您需要做的是,在执行sendKeys后获取textbox的文本,并验证它是否与输入参数(文本)匹配,如果匹配,则退出,否则使用循环逻辑重复步骤。需要注意的一点是,循环不会因为有标志退出循环而进入无限状态。

您可能需要使用
.getAttribute(“value”)
来捕获字段的当前文本

因此,您的方法可能如下所示:

public void clearAndSetValue(WebElement field, String text) {
    if (field.getAttribute("value").equals("")) {
        field.clear();
        field.click();
        field.sendKeys(Keys.chord(Keys.CONTROL, "a"), text);
    }
}

注意:我猜它将是
.getAttribute()
,正如您提到的使用文本字段元素,但没有HTML查看,我不能100%肯定它是。

谢谢您的回复。我知道我需要在发送密钥后获取文本,但是如何获取?因为正如问题中所解释的,在sendKey.getText()正常工作后,field.getText()返回空。如果看不到元素的html,很难说。正如其他人所建议的,您可以尝试getAttribute或同时使用JSExecutor.WebElement=driver.findElement(By.id(“”));JavascriptExecutor executor=(JavascriptExecutor)驱动程序;value=executor.executeScript(“返回参数[0].value;”,元素);您应该同时检查
getText()
getAttribute(“值”)