@densaface

Как с помощью WebElement.findElements(By.xpath .. сделать поиск только по дочерним узлам?

Вебдрайвер загружает тяжелую страницу и для оптимизации скорости ищу сразу массив
List els = driver.findElements(By.xpath("parentLocator"));

Успешно находятся более тысячи узлов (назовем их родительскими), каждый из которых содержит около сотни дочерних узелков, которые различаются между собой в пределах одного родителя, но повторяются как шаблонный набор от родителя к родителя. Суть вопроса как заставить els.get(2).findElements(By.xpath("//*[@data-module='childComponent'")); делать поиск только по дочерним элементам, а не по всей странице, возвращая массив в тысячу элементов (по числу родителей). Успешно опробован способ поиска по локатору такого вида
String locator = ".//*[@class='feed h-mod'][" + (ii+1)+
"]//*[@data-module='LikeComponent' and @data-type='RESHARE']//*[@class='widget_count js-count']";
WebElement themeLink = driver.findElement(By.xpath(locator));

Но такой способ требует поиска по всей странице и чем больше индекс ii тем тормознутее он работает. Моя логика мне подсказывает что как то можно заставить els.get(2).findElements(By.xpath( искать только по дочерним элементам
  • Вопрос задан
  • 1336 просмотров
Решения вопроса 1
alekciy
@alekciy
Вёбных дел мастер
делать поиск только по дочерним элементам, а не по всей странице

Дописать ось работы с потомками.
Хотя из описание не очень понятно, какие элементы родительские а какие дочерние. Какая структура поддерева "родитель-ребенок"?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы