如何从angularjs应用程序的输入字段中获取文本()

时间:2016-07-25 09:38:55

标签: javascript jquery angularjs selenium-webdriver

我的DOM如下所示,

<input class="k-textbox ng-pristine ng-untouched ng-valid ng-valid-required" type="text" placeholder="" ng-blur="controller.isDirty=true" ng-change="controller.isDirty=true" ng-model="controller.model.value" ng-required="controller.model.required" ng-disabled="controller.model.readOnly" ng-focus="controller.showFieldHistory(controller)" disabled="disabled">

我想从上面的输入标记中getText()。我尝试了以下方法,但由于这是JSapplication我无法getText。虽然文字在DOM中不可见,但UI中的用户可以看到该文字。

List<WebElement> values = driver.findElements(By.xpath("//input[@ng-model='controller.model.value']"));
    for(int i=0;i<values.size();i++)
    {
        String theTextIWant = values.get(0).getAttribute("ng-model");
        System.out.println(theTextIWant);

    }

以下是执行上述代码时得到的输出。

  

controller.model.value

     

controller.model.value

     

controller.model.value

从输出中我可以说它只是获取属性“ng-model”中存在的值,而不是UI中可见的实际文本。请告知我如何获得UI中可见的文字。

预期文字:

  

9161

     

韦斯利

     

乔特

1 个答案:

答案 0 :(得分:1)

当您使用ng-model作为属性时,它仅用于在运行时从控制器获取模型值,并将此值设置为input。因此,您正在获取ng-model属性而不是实际值。

实际上input元素在value属性中包含它们的值,所以你应该尝试如下: -

List<WebElement> values = driver.findElements(By.xpath("//input[@ng-model='controller.model.value']"));
for(WebElement el : values)
{
  String theTextIWant = el.getAttribute("value");
  System.out.println(theTextIWant);
}

希望它有帮助...:)