4

我有一个使用 ng-model 绑定到 javascript 对象的文本输入字段。javascript 对象为该字段提供初始值。

<input class="class1 class2" type="text" ng-model="scopeVar"></input>

scopeVar 是一个文本值。

当页面加载时,Selenium(使用 firefox 驱动程序)可以找到输入字段,验证它是否可见,可以在该字段中输入文本然后读取该文本,但它无法读取最初在该字段中的文本.

如果我在 firefox 浏览器窗口中执行 $('.class1.class2').val() 它会返回预期的默认值。

如果我执行 ((JavascriptExecutor) driver).executeScript("$('.class1.class2').val()") 它返回 null。如果我执行 driver.driver.findElement(By.cssSelector(".class1.class2")).getText() 它返回null。

所以看起来 Angular 正确地填充了 DOM(就 jQuery 而言),但 Selenium Web Driver 无法读取它。

注意:我确实验证了我有一个元素并且在我尝试阅读它之前它是可见的。

任何帮助表示赞赏。

4

1 回答 1

6

我不具体了解您的应用程序,但这适用于 ng-model 映射输入字段:

    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();

还有用于 Java 的 ngWebDriver

于 2013-06-27T14:43:13.447 回答