2016-12-01 55 views
0

使用行号我已经现有的方法类似下面,如何获得TD元素没有量角器

getSpecificCell: function(tableObject, rowNumber, columnCss) { 
    var ele = element(by.repeater(tableObject).row(rowNumber)).element(by.css('[' + columnCss + ']')); 
    return ele; 
} 

这有可能使用该行的文本,而不是ROWNUMBER这样做?

表格下面的HTML我需要的列值,而无需使用行号

HTML样本:

<table class="table"> 
    <thead> 
    <tr> 
     <th class="checkbox-column"></th> 
     <th class="main-column main-column--checkbox">Name</th> 
    </tr> 
    </thead> 
    <tbody ng-repeat="(a, b) in tests" class="ng-scope" style=""> 
    <tr class="panel__sub-header"> 
     <td> 
     <input name="item-checkbox" ng-click="toggleSelectAll(a)" type="checkbox"> 
     </td> 
     <td colspan="4"> 
     <h4 class="ng-binding">ROW2</h4> 
     </td> 
    </tr> 
    <tr ng-repeat="test in testData" ng-class-odd="'odd'" ng-class-even="'even'" class="ng-scope odd" style=""> 
     <td class="checkbox-column"><input name="item-checkbox" ng-click="checkFunction()" type="checkbox"></td> 
     <td class="main-column"> 
     <a ng-href="#" class="ng-binding" href="#">test.name</a> 
     </td> 
    </tr> 
    <tr ng-repeat="test in testData" ng-class-odd="'odd'" ng-class-even="'even'" class="ng-scope odd" style=""> 
     <td class="checkbox-column"><input name="item-checkbox" ng-click="checkFunction()" type="checkbox"></td> 
     <td class="main-column"> 
     <a ng-href="#" class="ng-binding" href="#">test.data</a> 
     </td> 
    </tr> 
    </tbody> 
    <tbody ng-repeat="(a, b) in tests" class="ng-scope" style=""> 
    <tr class="panel__sub-header"> 
     <td> 
     <input name="item-checkbox" ng-click="toggleSelectAll(a)" type="checkbox"> 
     </td> 
     <td colspan="4"> 
     <h4 class="ng-binding">ROW1</h4> 
     </td> 
    </tr> 
    <tr ng-repeat="test in testData" ng-class-odd="'odd'" ng-class-even="'even'" class="ng-scope odd" style=""> 
     <td class="checkbox-column"><input name="item-checkbox" ng-click="checkFunction()" type="checkbox"></td> 
     <td class="main-column"> 
     <a ng-href="#" class="ng-binding" href="#">test.name</a> 
     </td> 
    </tr> 
    <tr ng-repeat="test in testData" ng-class-odd="'odd'" ng-class-even="'even'" class="ng-scope odd" style=""> 
     <td class="checkbox-column"><input name="item-checkbox" ng-click="checkFunction()" type="checkbox"></td> 
     <td class="main-column"> 
      <a ng-href="#" class="ng-binding" href="#">test.data</a> 
     </td> 
    </tr> 
    </tbody> 
</table> 
+0

你可以做到这一点,但为表格元素提供相关的HTML代码,其中有一些行。 –

+0

那么基于哪个行值需要过滤? –

+0

是的。 (by.repeater(tableObject).row(rowNumber))。element(by.css('['+ columnCss +']')); 从这而不是行(rowNumber)我需要使用行文本(ROW2) – Prabhu

回答

0

您可以使用filter()方法WebElement的滤镜阵列。看看下面的例子,

getSpecificCell: function(tableObject, expectedRowValue, columnCss) { 
    var ele =element.all(by.repeater(tableObject).filter(function(rowElement){ 
     return rowElement.element(by.css("td h4")).getText().then(function(rowValue){ 
     return rowValue == expectedRowValue; 
     }) 
    }).first().element(by.‌​css('[' + columnCss + ']')); 

return ele; 
} 
+0

我试过这与element.all,但面临以下错误 '索引超出限制。尝试访问索引为0的元素,但只有0个元素匹配定位符by.repeater' – Prabhu

+0

您需要使用'element.all(by.repeater())'。更新了我的答案。 –

+0

是的,用'element.all(by.repeater())'尝试过后才面对上面的错误 – Prabhu