如何在验证元素是否存在时考虑ng-if?

时间:2016-01-26 16:25:21

标签: javascript angularjs protractor

我的页面上有一个div,有时会被ng-hidden隐藏。我想设计一个测试,检查元素是否仅存在时才存在。 ng-if如果测试失败,则从DOM中完全删除该元素。

我尝试在量角器中编写一个if语句来评估我的ng-if正在评估的相同的东西,然后只有在评估为true时才期望值,但看起来像量角器不知道非dom元素,这是有道理的,但让我有点难过该做什么。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

.isPresent()方法检查DOM中是否存在元素:

expect(elm.isPresent()).toBe(false);

您还可以使用.evaluate()来评估ng-if值:

expect(elm.evaluate("ng_if_value")).toBe(false);

答案 1 :(得分:0)

对于这个解决方案,我们需要首先检查,元素是否存在

<div id="status" ng-if="data.isDeleted">  
     <span id="delete_status"> Deleted </span> 
</div> 
  

如果data.isDeleted为真,那么我们预期会进一步

var statusId= element(by.id('status'));
statusId.isPresent().then(function (present){
   if(present){
      expect(statusId.evaluate("data.isDeleted")).toBeTruthy();
      expect(statusId.element(by.id("delete_status")).getText()).toContain("Deleted");
   }
});