Protractor 如何在量角器中识别具有两个期望条件的特定元素

Protractor 如何在量角器中识别具有两个期望条件的特定元素,protractor,Protractor,在我的应用程序中,我希望通过使用其名称和所有者名称来选择特定通知。用量角器怎么做? 我添加了屏幕截图,我想从列表中选择通知“Sonal Dalal测试拍卖1”。 第二个屏幕截图显示了通知“Sonal Dalal测试拍卖1”的页面代码 我在规范文件中尝试了以下代码: Auction.AuctionNotiNewInv.isDisplayed().then(function(){ Auction.NotificationTitle.get(0).isDisplayed().the

在我的应用程序中,我希望通过使用其名称和所有者名称来选择特定通知。用量角器怎么做? 我添加了屏幕截图,我想从列表中选择通知“Sonal Dalal测试拍卖1”。 第二个屏幕截图显示了通知“Sonal Dalal测试拍卖1”的页面代码

我在规范文件中尝试了以下代码:

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.');

                        });
                    });
                }
            });
        });
    });
但上面的代码返回me count=4,因为页面上还有其他对象具有相同的“NotificationTitle”属性,但它不是通知列表的一部分。 有人可以建议我使用expect函数处理此问题的其他方法吗?

您可以使用
filter()
方法根据条件筛选元素列表。请尝试下面的定位器

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();
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();