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

How to account for ng-if when verifying if an element is present?

本文关键字:何考虑 ng-if 存在 验证 元素 是否      更新时间:2023-09-26

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

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

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

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

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

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

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

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

如果data.isDelete是真的,那么我们确实期望进一步

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");
   }
});