Protractor 基于getText()的文本从量角器中的ElementArrayFinder获取特定元素
我试图根据所需元素的文本从ElementArrayFinder获取特定的ElementFinder 例如,假设Angular2应用程序提供了以下HTML片段: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
<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();