javascript - 尝试使用量角器过滤 ng-repeat 生成的表
问题描述
我有以下表示表格的结构,并试图根据<a href>
文本进行过滤,然后是<p>
文本:
<tr ng-repeat="a in apples" class="ng-scope">
<td>
<p>
<a href="javascript::" ng-click="openModal()" class="ng-binding">Some text</a>
</p>
</td>
<td>...</td>
<td>
<p class="ng-binding">Some other text</p>
</td>
<td>...</td>
</tr>
到目前为止,我已经尝试过使用element.all(by.repeater('a in apples')
,但从那里我不知道我是否应该使用.filter
或应该链接element(by.css())
,直到我开始使用<a href>
and <p>
。如果文本匹配某个值,我想返回 true 并用expect()
.
我也尝试过查看文档,但大多数示例仅显示如下内容:
element.all(by.css('.items li')).filter(function(elem, index) {
return elem.getText().then(function(text) {
return text === 'Third';
});
解决方案
您可以通过 找到所有行element.all()
,然后获取期望的文本,<a>
并<p>
在每个tr
文本中,如果两个文本都符合期望值,则返回 true。
推荐用于await/async
使代码简单。
# Use promise.then(), have to loop all rows, even matched row is not the last row
element.all(by.repeater('a in apples'))
filter(function(tr){
let linkText = tr.element(by.css('td:nth-child(1) a')).getText()
let pText = tr.element(by.css('td:nth-child(3) p')).getText()
return Promise.all([linkText, pText]).then(function(texts){
return texts[0] === <link text> && texts[1] === <p text>
});
})
# Use await/async, end loop once find match row, not loop all rows
match = false
rows = element.all(by.repeater('a in apples'))
rowCount = await rows.count()
for(let i=0;i<rowCount;i++) {
let linkText = await rows.get(i).element(by.css('td:nth-child(1) a')).getText()
let pText = await rows.get(i).element(by.css('td:nth-child(3) p')).getText()
if(linkText === <link text> && pText === <p text>) {
match = true
return
}
}
量角器使用指南await/async
推荐阅读
- spring - 当所有属性为空/空值时,如何使用可为空字段验证 RequestBody
- ajax - 如何使用 Angular 应用程序和 Java 后端处理 CORS 错误?
- python - 打印实际直播时间
- javascript - 内容安全策略多重随机数
- javascript - 使用 ESNEXT 的 Gutenberg 中继器块
- python - 将字符串列表(使用空格而不是逗号)转换为列表列表
- asp.net - 未在 Azure Web App 中设置 SameSite None cookie 属性
- javascript - 将 HREF 与 jQuery 一起使用会容易受到 XSS 攻击吗?
- outlook - 谷歌日历中的 ICAL 有额外的活动
- angular - 表单组件,可与反应式和模板驱动的表单一起使用