Нажмите на столбец в таблице - Транспортир
У меня довольно большой Compelx TABLE в HTML, и мне нужно нажать на первую строку:
<div class="ui-grid-canvas"> //this is whole table
<div ng-repeat="(rowRenderIndex, row) in rowContainer.renderedRows track by $index" class="ui-grid-row ng-scope" ng-style="containerCtrl.rowStyle(rowRenderIndex)" ng-class="{'ui-grid-row-selected': row.isSelected}" style="margin-top: 0px;"> //this is one line
<div ui-grid-row="row" row-render-index="rowRenderIndex" class="ng-isolate-scope"> //this is blanked part (740x0px)
<div ng-repeat="(colRenderIndex, col) in colContainer.renderedColumns track by col.colDef.name" class="ui-grid-cell ng-scope ui-grid-col0 ui-grid-row-header-cell" ng-class="{ 'ui-grid-row-header-cell': col.isRowHeader }" ui-grid-cell="">
<div class="ui-grid-disable-selection ng-scope"> //stil first column
<div class="ui-grid-cell-contents"> //stil first column
<div class="ui-grid-selection-row-header-buttons ui-grid-icon-ok ng-scope" ng-class="{'ui-grid-row-selected': row.isSelected}" ng-click="selectButtonClick(row, $event)"> </div> //clickable part of first element.
Как это выглядит, мне нужно нажать на номер строки 20, 21,22, кто-нибудь, кто может мне помочь с этим?
Я пытаюсь с чем-то вроде:
element(by.css('.ui-grid-canvas').row(22)).element(by.css('[ng-click="selectButtonClick(row, $event)"]')).click();
но я получаю ошибку:
r(".ui-grid-canvas") has no method 'row'
Пожалуйста, здесь кто-нибудь, кто может помочь мне с этим?
РЕДАКТИРОВАТЬ: экран кода:
1 ответ
Решение
Использование element.all()
с by.repeater()
:
element.all(by.repeater('(rowRenderIndex, row) in rowContainer.renderedRows')).then(function(arr) {
arr[20].all(by.css('[ng-click^=selectButtonClick]')).first().click();
});
Вам также может понадобиться прокрутить до элемента, прежде чем сделать клик:
var scrollIntoView = function () {
arguments[0].scrollIntoView();
}
element.all(by.repeater('(rowRenderIndex, row) in rowContainer.renderedRows')).then(function(arr) {
var row = arr[20];
browser.executeScript(scrollIntoView, row.getWebElement()).then(function () {
row.all(by.css('[ng-click^=selectButtonClick]')).first().click();
});
});
Смотрите также: