我有一个使用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

10-06 07:27
查看更多