遍历每一行以获取列文本

时间:2017-04-03 08:07:28

标签: loops protractor

我的grid

以下

html代码位于pastebin.com/GBP3AZNQ

我想验证是否存在“test123”。我想遍历列master的义务名称的每一行,并查找文本test123。

任何人都可以指导我如何做到这一点吗?

3 个答案:

答案 0 :(得分:1)

您可以按parent class进行操作,如下所示:

element.all(by.xpath("//div[@class='ui-grid-cell-contents ng-scope ng-binding']")).getText().then(function (msg) 
{ 
console.log("Grid contains" + msg);
expect(msg).toContain("test123");
}

如果假设Master_obligation名称为test_876 然后

var master_obligation_name= "test_876" ;

假设您填写的义务为:

element(by.xpath("path to master_obligation text field")).sendKeys(master_obligation_name);

创建行后,验证新添加的行:

 var row_check = element(by.xpath("//div[contains(text(),'test_876')]"));
 if(row_check.isPresent())
 {
  row_check.getText().then(function (msg) {  
        console.log("Grid contains" + msg);
  });
 }

快乐学习。 : - )

答案 1 :(得分:0)

您可以使用Protractor API的element.all()。each()方法来满足您的要求。请按照以下代码。将定位器放在下面的代码中给出特定列的所有行。它将完美地工作。

element.all(by.css('locatorwhichgiveallrows')).each(function(rowElement,  
            index) {
          rowElement.getText().then(function (rowText) {
          if(rowText=="test123"){
              return true;}
     });
}).then(function(isPresent){
console.log("test123 is Present"+isPresent);
});

答案 2 :(得分:0)

检查此代码。它检查表中是否有给定的文本。

    this.searchCourseGrid = function(course){
          var row = element.all(by.css('css path to tr'));
          var cells = row.all(by.tagName('td'));
          var cellTexts = cells.map(function (cell) {
          return cell.getText();
          }).then(function(cellTexts){
            expect(cellTexts).toContain(course);
          });
};