Protractor 如何断言表中是否存在文本

Protractor 如何断言表中是否存在文本,protractor,Protractor,我不熟悉量角器,希望断言新添加的行是否包含我添加的文本 我还想断言特定文本是否属于标题部分 我在某种程度上尝试过,但我的代码失败了 下面是我的代码 var row=element.all(by.repeater('dataRow in displayedCollection')); var col=row.all(by.tagName('td')); col.each(function(item) { item.getText().then(function(t

我不熟悉量角器,希望断言新添加的行是否包含我添加的文本

我还想断言特定文本是否属于标题部分

我在某种程度上尝试过,但我的代码失败了

下面是我的代码

 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);
});
如果新行并不总是最后一行,那么找到它的方法就不同了。例如,如果每次添加一行时,表都按字母顺序排序,则需要筛选行列表以找到要查找的行,然后检查文本是否与预期的匹配

除非您想验证每列中的文本是否正确,否则实际上不需要获取每个
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);
这可能完全准确,也可能不完全准确。我只是做了我的头顶没有测试出来,但它应该是非常接近这样的东西

对于标题,它将是类似的

  • 获取所有标题元素
  • 对每个文本进行迭代,并检查文本是否与您期望的匹配

首先,我建议您了解如何使用
async/await
,这样编写任何脚本都会容易得多