java - 元素不可见异常 |使用 Selenium Webdriver 测试 AngularJs 应用程序

标签 java angularjs selenium protractor

我正在尝试使用 Selenium Webdriver 和 Java 来测试 angularJs 前端。

我想将一些 key 发送到电子邮件输入框。 我面临的问题是,输入框对于 Selenium 来说似乎是不可见的。我想这与 Angular 的 ng-hide 指令有关。需要明确的是,当测试自动化启动时,我肯定可以看到输入框,因此对于我来说,输入框似乎是可见的。

前端图片:

enter image description here

HTML:

<input id="changedbyEmailInput" class="form-control ng-pristine ng-valid ng-empty ng-touched" type="text" ng-model="article.author.email" placeholder="Your Email" ng-hide="article.isTemp === false" style="">

获取文本框的Java代码:

element = driver.findElement(By.id("changedbyEmailInput"));
element.sendKeys(keys);

带有超时的 Java 代码

WebDriverWait wait = new WebDriverWait(driver, 10);
WebElement element = wait.until(ExpectedConditions.elementToBeClickable(By.id("changedbyEmailInput")));

我也尝试过使用超时,但它只是超时,所以我想它永远不会改变它的状态。

PS:如果有人知道使用 Protractor 是否可以轻松解决此问题,请告诉我。如果它能解决我的问题,我愿意改用 Protractor 。

谢谢!

编辑: 问题已经解决了。它与 ng-hide 无关。这个 id 并不是唯一的。因此总是有一个被禁用的输入框。

最佳答案

您应该尝试 JavascriptExecutor 设置值,如下所示:-

JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("document.getElementById('changedbyEmailInput').value = arguments[0]", "value to set");

希望对你有帮助...:)

关于java - 元素不可见异常 |使用 Selenium Webdriver 测试 AngularJs 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37655187/

相关文章:

java - 具有空数据和源文件 : inline evaluation of: `` 的 ListModel 中的 ZK NullPointerException

javascript - AngularJS 指令范围属性匹配

ruby - 如何在 Ruby Selenium 中使用 Chrome 选项?

javascript - 为 MVC 和 AngularJS 启用 CORS

javascript - 我的 Angular 表单输入[数字]验证不起作用

python-3.x - 用于选择多个条件的 Python 和 Selenium xpath

google-chrome - Selenium Chrome 抑制/取消客户端证书选择对话框

java - 如何使用 Hibernate Criteria 延迟获取字段

java - 如何在 Heroku 上使用 jetty-runner 增加 Jetty 线程池大小?

java - 使用 Java Conf 而不是 xml 配置 Spring Wicket