2016-11-18 24 views
1

条件在我的应用我想通过使用它的名字所有者名称来选择特定的通知。我如何在量角器中做到这一点? 我增加了截图,我想从列表中选择通知“由SONAL达拉尔测试Auction1”。 第二个屏幕显示的通知 “测试Auction1由SONAL达拉尔” 我曾尝试下面的规范文件中的代码页代码如何识别特定的元素与两个期望量角器

enter image description here

enter image description here

Auction.AuctionNotiNewInv.isDisplayed().then(function(){ 
     Auction.NotificationTitle.get(0).isDisplayed().then(function(){ 
      Auction.NotificationTitle.count().then(function(Count){ 
       console.log(Count); 
       var NotifTitleCount = Count; 
       for(var i=0; i < NotifTitleCount; i++) { 
        Auction.NotificationTitle.get(i).isDisplayed().then(function(){ 
         Auction.NotifAuctioneer.isDisplayed().then(function(IsDisplayed){ 
         if(IsDisplayed) 
          Auction.NotificationTitle.get(i).click(); 
         else 
          console.log('New Auction invitation is not displayed.'); 

         }); 
        }); 
       } 
      }); 
     }); 
    }); 

和PO文件如下图所示:

this.AuctionNotiNewInv = element(by.cssContainingText('.md-subheader-inner','NEW INVITATIONS')); 
this.NotificationTitle = element.all(by.cssContainingText('.title.ng-binding',data.AuctionName)); 
this.NotifAuctioneer = element(by.cssContainingText('.subtitle.ng-binding',data.NewFirstName + ' ' + data.NewLastName)); 

但上面的代码返回我数= 4,因为有它有“NotificationTitle”的同一属性页面上的其他对象,但它不是通知列表的一部分。 有人建议我另一种方式来处理这个问题用期待的功能?

回答

3

您可以使用filter()方法来筛选基于conditions.Try以下定位的元素列表,

var expectedTitle= 'TestAuction1'; 
var expectedOwner = 'Sonal Dalal'; 
var notificationElement = element.all(by.repeater("notif in notifSubList")).filter(function(notification){ 
    var title = notification.element(by.css("span.title")).getText(); 
    var owner = notification.element(by.css("span.subtitle")).getText(); 
    return protractor.promise.all([title,owner]).then(function(result){ 
    return result[0].trim() == expectedTitle && result[1].trim() == expectedOwner; 
    }) 
}).first(); 
+0

非常感谢,它为我工作。 –