Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Protractor 用于导航DOM的量角器和xpath_Protractor_Angularjs E2e - Fatal编程技术网

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”文本之间的唯一值来计算最左边的行标题的相关数据值。。。