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

时间:2013-12-03 07:46:18

标签: 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) {
    if (field.getText().equals("")) {
        field.clear();
        field.click();
        field.sendKeys(Keys.chord(Keys.CONTROL, "a"), text);
    }
  }

我的目的是确保字段值等于我想要键入的内容,否则不要使用此方法。

此方法不起作用field.getText()始终返回空,而循环内的方法键入字符串。我猜是因为getText()只返回字段的原始状态?

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

有办法做到这一点吗?

感谢。

2 个答案:

答案 0 :(得分:0)

您需要做的是,在执行sendKeys之后获取文本框的文本并验证它是否与输入参数(文本)匹配,如果它然后退出,否则使用循环逻辑重复这些步骤。你应该注意的一件事是,通过使用一个标志来退出循环,循环不会变成无限。

答案 1 :(得分:0)

您可能需要使用.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%确定它是。< / p>