我的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
韦斯利
乔特
答案 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);
}
希望它有帮助...:)