量子器isPresent()结果为/ ng-if中的元素

时间:2015-03-13 17:02:36

标签: angularjs protractor

在我的应用程序中,我有一个控制器,其范围有一个模型,用于确定我视图中的条件。很标准。

控制器

$scope.shouldShow = false;
$scope.seeCoal = true;

视图

<div ng-controller="SomeController" ng-if="shouldShow">
  <span id="coal" ng-show="seeCoal"></span>
</div>

足够公平。当我将此shouldShow更改为真实的东西时,此div将呈现。

量角器如何解释这个并且它包含标记?如果我的测试shouldShow模型设置为true,那么#coal会认为element.isPresent()元素是否存在?

另外,如果(在我的测试中)我shouldShow设置为truthy(保持为假),并将seeCoal设置为false - 我是否能够遍历到#coal以确认ng-hide类是否存在,即使它的父级具有评估为false的ng-if条件?

在我尝试这项工作的项目中,我有太多的不确定因素,我无法确定在这些情况下量角器应该如何工作。

1 个答案:

答案 0 :(得分:5)

Angular&#39; ng-if将从DOM中删除受影响的元素。因此,它们及其子元素将不会以任何形式显示给量角器。如果shouldShow为假,则“量角器”根本不会显示“煤炭”范围。

ng-show会在DOM中留下一个元素,但会使其不可见。请参阅what is the difference between ng-if and ng-show/ng-hide

量角器定位器应该能够找到ng-show - 隐藏元素。其承诺的isDisplayed()方法应该承诺返回false。见How to use protractor to check if an element is visible?