Транспортир - Как найти все дочерние элементы в родительском узле? - PullRequest
0 голосов
/ 12 сентября 2018

Я пытаюсь найти все дочерние элементы в родительском веб-элементе.

это родительский элемент:

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')]"));

Может кто-нибудь направить / направитьмне правильно обращаться с этим?

Спасибо

1 Ответ

0 голосов
/ 12 сентября 2018

@ Кевин.Я бы использовал 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')

Соберет все элементы div родительского элемента bl-e-comm [tag = "parent"]

Подробнее об 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']"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...