问题描述
我还想断言特定文本是否属于标题部分。
我在某种程度上做了尝试,但是我的代码失败了。
下面是我的代码
var row=element.all(by.repeater('daTarow in displayedCollection'));
var col=row.all(by.tagName('td'));
col.each(function(item)
{
item.getText().then(function(text)
{
})
})
})
下面是HTML代码
下面是用户界面
解决方法
Sergey是正确的,使用async / await会容易得多,但是在这里使用您的示例就是我的方法。
假设新添加的行始终是表中的最后一行,您可能可以执行以下操作:
const rows = element.all(by.repeater('dataRow in displayedCollection'));
const relevantRow = rows.last();
relevantRow.getText().then(test => {
expect(text).toContain(mySampletext);
});
如果新行并不总是最后一行,那么找到它的方式将有所不同。例如,如果每次添加一行时,表都是按字母顺序排序的,那么您将需要过滤行列表以查找要查找的行,然后检查文本是否与您期望的匹配。 / p>
除非您要验证每列中的文本正确,否则实际上不需要获取每个td
元素。在这种情况下,您可能会这样做:
const expectedText = ['someText','in order','by','columns'];
const rows = element.all(by.repeater('dataRow in displayedCollection'));
const relevantRow = rows.last();
const columns = relevantRow.$$('td');
let coumnTextMatches = true;
columns.each((col,index) => {
col.getText().then(text => {
columntextMatches = expectedText[index] === text;
});
});
expect(columntextMatches).toEqual(true);
这可能会或可能不会完全准确。我只是在没有测试的情况下就把它弄掉了,但是它应该非常接近这样的东西。
对于标题,它是相似的。
- 获取所有标题元素
- 反复检查每个文本,并检查文本是否符合您的期望