Protractor 用于导航DOM的量角器和xpath
我可以使用Protractor 用于导航DOM的量角器和xpath,protractor,angularjs-e2e,Protractor,Angularjs E2e,我可以使用cssContainingText()查找网格行,并获取其id属性,如下所示: 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('(rowRender
cssContainingText()
查找网格行,并获取其id属性,如下所示:
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
表达式来获取相关的数据行,文本值为“MY value-COL2,row 1”,id=“1484316102519-0-uiGrid-0007-cell”
下面是一个示例DOM-
...
...
第1列第1行文本内容
第1列第2行文本内容
我的值-COL2,第1行
我的值-COL2,第2行
我的解决方案是非常具体的ui网格,因此这可能会对将来的人有所帮助。
考虑上面DOM示例中的一个片段,请注意,-1-
表示行号,-0006
表示列号:
<!-- COL 1, ROW 2 -->
<div id="1484316102519-1-uiGrid-0006-cell">
<div class="ui-grid-cell-contents" title="COL 1, ROW 2 TEXT CONTENTS"> COL 1, ROW 2 TEXT CONTENTS</div>
</div>
第1列第2行文本内容
我无法首先通过中继器获取所有行:
var行myGrid.all(by.repeater(“…”)代码>
然后按文本查找该行:
var result=rows.all(by.cssContainingText('div','COL 1,ROW 2 TEXT CONTENTS')).first()代码>
在我的例子中,我需要第一个父div来获取id
attrib:
var parId=result.all(by.xpath(“./div”);
var myRowId parId.getAttribute)“id”)代码>
现在有了所需的行id,我将提取行号,以便可以访问ui网格的数据行:
var rowId=myRowId.split('-')[1]代码>
现在我终于可以得到数据行了:
var row=this.getDataRows().get(rowId)代码>//getDataRows是我的函数库的内部
一旦我有了行
,我就可以走了
我希望这对将来的人有所帮助。我的解决方案是非常具体的ui网格,所以这可能会对将来的人有所帮助。
考虑上面DOM示例中的一个片段,请注意,-1-
表示行号,-0006
表示列号:
<!-- COL 1, ROW 2 -->
<div id="1484316102519-1-uiGrid-0006-cell">
<div class="ui-grid-cell-contents" title="COL 1, ROW 2 TEXT CONTENTS"> COL 1, ROW 2 TEXT CONTENTS</div>
</div>
第1列第2行文本内容
我无法首先通过中继器获取所有行:
var行myGrid.all(by.repeater(“…”)代码>
然后按文本查找该行:
var result=rows.all(by.cssContainingText('div','COL 1,ROW 2 TEXT CONTENTS')).first()代码>
在我的例子中,我需要第一个父div来获取id
attrib:
var parId=result.all(by.xpath(“./div”);
var myRowId parId.getAttribute)“id”)代码>
现在有了所需的行id,我将提取行号,以便可以访问ui网格的数据行:
var rowId=myRowId.split('-')[1]代码>
现在我终于可以得到数据行了:
var row=this.getDataRows().get(rowId)代码>//getDataRows是我的函数库的内部
一旦我有了行
,我就可以走了
我希望这对将来的人有所帮助。id
的值是否应该相等——“1484316102519-0-uiGrid-0006-cell”和“1484316102519-0-uiGrid-0007-cell”都相等?或者,0006和0007的区别是故意的?谢谢。@alecxe-你好,Alex。这种数字上的差异是有意造成的。这似乎是一种模式。我可能只是通过剥离“uiGrid”文本和“-cell”文本之间的唯一值来计算最左边的行标题的相关数据值,“id
值是否应该相等——“1484316102519-0-uiGrid-0006-cell”和“1484316102519-0-uiGrid-0007-cell”?或者,0006和0007的区别是故意的?谢谢。@alecxe-你好,Alex。这种数字上的差异是有意造成的。这似乎是一种模式。我可能只是通过剥离“uiGrid”文本和“-cell”文本之间的唯一值来计算最左边的行标题的相关数据值。。。