首页 > 解决方案 > 量角器 - 如何在父节点中查找所有子元素?

问题描述

我正在尝试查找父 web 元素中的所有子元素。

这是父元素:

tableRow = element.all(by.xpath(
           "//tr[contains(@class, 'ng-scope')]" +
           "[@ng-repeat='audit in location.displayedProfileAudits']"))
          .get(0);

我尝试了以下代码片段,但都失败了:

//this fails with a timeout
var resultIcons = tableRow.all(by.xpath(".//i[contains(@class, 'icon')][contains(@ng-if, 'field.match')]"));

//this fails due to: TypeError: tableRow.element.all is not a function
var resultIcons = tableRow.element.all(by.xpath(".//i[contains(@class, 'icon')][contains(@ng-if, 'field.match')]"));

//this also times out
var resultIcons = tableRow.element(by.xpath(".//i[contains(@class, 'icon')][contains(@ng-if, 'field.match')]"));

任何人都可以以适当的方式指导/指导我处理这个问题吗?

谢谢

标签: angularjsprotractorqa

解决方案


@凯文。我会使用 CSS 选择器。基本上,我认识的几乎每个人都使用 CSS 选择器。它看起来非常容易。

例如:

var resultIcons = $$('your_parent_element your_child_element'))

例子:

<bl-e-comm tag="parent">  

 <div elem="child1">....</div>
 <div elem="child1">....</div>
 <div elem="child1">....</div>
 <div elem="child1">....</div>

</bl-e-comm>

您的定位器是:

var allChildElements = $$('bl-e-comm[tag="parent"] div') // $$('bl-e-comm[tag="parent"] {NOTE:here is empty space between locators} div')

将收集父bl-e-comm[tag="parent"] 的所有 div 元素

阅读此处了解更多 CSS 选项:https ://www.w3schools.com/cssref/css_selectors.asp

对于您的脚本转换为 css 选择器:

tableRow = element.all(by.css(
        "tr[class*='ng-scope')][ng-repeat*='audit in location.displayedProfileAudits']"))
        .get(0);

var resultIcons = tableRow.element(by.css("i.icon[ng-if*='field.match']"));

推荐阅读