我有一个使用ng-model绑定到javascript对象的文本输入字段。 javascript对象为该字段提供一个初始值。
<input class="class1 class2" type="text" ng-model="scopeVar"></input>
scopeVar是一个文本值。
页面加载后,Selenium(使用firefox驱动程序)可以找到输入字段,确认它是可见的,可以在该字段中输入文本,然后再读回该文本,但无法读取该字段中最初的文本。
如果我在Firefox浏览器窗口中执行$('。class1.class2')。val(),它将返回预期的默认值。
如果执行((JavascriptExecutor)驱动程序).executeScript(“ $('。class1.class2')。val()”),则返回null。
如果执行driver.driver.findElement(By.cssSelector(“。class1.class2”))。getText(),则返回null。
因此,看起来Angular正确填充了DOM(就jQuery而言),但是Selenium Web Driver无法读取它。
注意:在尝试读取元素之前,我确实确认我有一个元素并且该元素可见。
任何帮助表示赞赏。
最佳答案
我具体不了解您的应用程序,但这对ng模型映射的输入字段有效:
WebDriver wd = new FirefoxDriver();
wd.get("http://jsfiddle.net/SAWsA/11/show/");
WebElement input = wd.findElement(By.tagName("input"));
input.sendKeys("hello");
input = wd.findElement(By.tagName("input"));
System.out.println("fieldValue=" + input.getAttribute("value"));
wd.quit();
还有ngWebDriver for Java。