Protractor 基于getText()的文本从量角器中的ElementArrayFinder获取特定元素

Protractor 基于getText()的文本从量角器中的ElementArrayFinder获取特定元素,protractor,Protractor,我试图根据所需元素的文本从ElementArrayFinder获取特定的ElementFinder 例如,假设Angular2应用程序提供了以下HTML片段: <ul id="names"> <li><span>Adam</span> <span class="ids">ID: 1</span></li> <li><span>Becky</span> <span

我试图根据所需元素的文本从ElementArrayFinder获取特定的ElementFinder

例如,假设Angular2应用程序提供了以下HTML片段:

<ul id="names">
  <li><span>Adam</span> <span class="ids">ID: 1</span></li>
  <li><span>Becky</span> <span class="ids">ID: 2</span></li>
  <li><span>Chris</span> <span class="ids">ID: 3</span></li>
</ul>
我得到的结果是,我等待了很长时间,然后看到:

getCardByName: got the card for Adam
getCardByName: got the card for Becky
getCardByName: returning card

FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory
在我当前的解决方案中,我不断遇到以下问题:

我不确定我是否做错了什么,或者是否可以改进我的代码,或者我是否真的遇到了上面链接的bug报告中描述的问题

考虑到它的价值,假设卡片对象如下所示:

function Card(containerEl) {
    this.containerEl = containerEl;
}

Card.prototype = {
    constructor: Card,
    verifyId: function(expectedId) {
        var el = this.containerEl.$('span.ids');
        expect(el.getText()).toEqual(expectedId);
    }
}
您可以使用filter()函数来完成此任务

 var rows = element(by.id('names'));

 var becky = rows.all(by.tagName('li')).filter(function (elem) {
            return elem.getText().then(function (val) {
                return val === 'Becky'
            });
        }).first();

这对我来说是个窍门,但它在我的6行数组中运行了13次。我会问另一个关于这个的问题。
function Card(containerEl) {
    this.containerEl = containerEl;
}

Card.prototype = {
    constructor: Card,
    verifyId: function(expectedId) {
        var el = this.containerEl.$('span.ids');
        expect(el.getText()).toEqual(expectedId);
    }
}
 var rows = element(by.id('names'));

 var becky = rows.all(by.tagName('li')).filter(function (elem) {
            return elem.getText().then(function (val) {
                return val === 'Becky'
            });
        }).first();