Я могу использовать cssContainingText()
для поиска строки сетки, и принеси его идентификатор атрибута следующим образом:транспортир и XPath для навигации по DOM
this.getRowIdByText = function (text) {
var sel = '#theReport .ui-grid-viewport .ui-grid-canvas';
var firstRow = element.all(by.css(sel)).first();
var gridRows = firstRow.all(by.repeater('(rowRenderIndex, row) in rowContainer.renderedRows track by $index'));
var result = gridRows.all(by.cssContainingText('div', "COL 1, ROW 1 TEXT CONTENTS")).first();
var parentId = result.all(by.xpath("./div")); // "./ancestor::div[starts-with(@id, 'id')]"
return parentId.getAttribute("id");
, но теперь я хотел бы использовать некоторые xPath
выражение для получения связанной строки данных с текстовым значением «МОЕ ЗНАЧЕНИЕ - COL2, ROW 1» и id = «1484316102519-0-uiGrid-0007-cell».
Вот пример DOM -
<div class="ui-grid-contents-wrapper">
<div class="grid-menu-stuff">...</div>
<!-- LEFT-MOST COLUMNS -->
<div class="grid-container-left">
\t <div class="grid-header">...</div>
\t <div role="rowgroup" class="ui-grid-viewport">
\t
\t <div class="ui-grid-canvas">
\t \t <!-- HERE IS THE ROW REPEATER !!! -->
\t \t <div ng-repeat="row in rowContainer.renderedRows">
\t \t <div ui-grid-row="row">
\t \t <div class="ui-grid-cell">
\t \t
\t \t <!-- COL 1, ROW 1 -->
\t \t <div id="1484316102519-0-uiGrid-0006-cell">
\t \t <div class="ui-grid-cell-contents" title="COL 1, ROW 1 TEXT CONTENTS"> COL 1, ROW 1 TEXT CONTENTS</div>
\t \t </div>
\t \t
\t \t </div>
\t \t </div>
\t \t </div> \t
\t \t <div ng-repeat="row in rowContainer.renderedRows">
\t \t <div ui-grid-row="row">
\t \t <div class="ui-grid-cell">
\t \t
\t \t <!-- COL 1, ROW 2 -->
\t \t \t <div id="1484316102519-1-uiGrid-0006-cell">
\t \t \t <div class="ui-grid-cell-contents" title="COL 1, ROW 2 TEXT CONTENTS"> COL 1, ROW 2 TEXT CONTENTS</div>
\t \t \t </div>
\t \t </div>
\t \t </div>
\t \t \t \t
\t \t \t \t
\t \t </div>
\t \t <div ng-repeat="row in rowContainer.renderedRows">
\t \t \t \t
\t \t </div>
\t </div>
\t
\t </div>
</div>
<!-- DATA ROWS -->
<div role="rowGroup" class="ui-grid-viewport">
<div class="ui-grid-canvas">
<div ng-repeat="row in rowContainer.renderedRows">
<div ui-grid-row="row">
<div ui-grid-row="row">
<div ng-repeat="col in Columns" id="1484316102519-0-uiGrid-0007-cell">
<div class="ui-grid-cell-contents" title="MY VALUE - COL2, ROW 1">MY VALUE - COL2, ROW 1</div>
</div>
</div>
</div>
</div>
<div ng-repeat="row in rowContainer.renderedRows">
\t <div ui-grid-row="row">
\t \t <div ui-grid-row="row">
\t \t <div ng-repeat="col in Columns" id="1484316102519-1-uiGrid-0007-cell">
\t \t <div class="ui-grid-cell-contents" title="MY VALUE - COL2, ROW 2">MY VALUE - COL2, ROW 2</div>
\t \t </div>
\t \t </div>
\t </div>
</div>
</div
</div>
</div>
я заметил, есть корреляция с генерацией Див идентификаторов, так что я мог бы, вероятно, лишить ID вниз и вывести его связанную ячейку данных ; однако, есть ли способ использовать xPath для получения связанного div?
Возможно, я ищу элемент для родства, но я не понимаю, как это сделать, используя выражения xpath.
Спасибо, Боб
Если значения «id» равны - оба «1484316102519-0-uiGrid-0006-cell» и «1484316102519-0-uiGrid-0007-cell»? Или, 0006 против 0007 разница намеренно? Благодарю. – alecxe
@alecxe - Привет, Алекс. Эта цифровая разница является преднамеренной. Кажется, это образец. Вероятно, я мог бы просто рассчитать этот заголовок в левом верхнем ряду к его связанному значению данных, разделив уникальное значение между текстом «uiGrid» и текстом «-cell» ... –