Как получить все WebElements из углового приложения с помощью Selenium Webdriver? - PullRequest
0 голосов
/ 20 июня 2019

По сути, я хочу получить все веб-элементы на веб-странице.Я использую нижеследующее, которое отлично работает для статических HTML-страниц.

List<WebElement> all = wd.findElements(By.cssSelector("*"));

Но на угловых страницах я не могу получить все элементы (из-за директивы, используемой на HTML-странице).

Исходный код страницы выглядит примерно так:

<html>
<body>
<app-root></app-root>
</body>
</html>

Конечная игра заключается в создании инструмента для генерации локаторов на странице, я использую Java и selenium-wd для него.Если есть лучший подход, пожалуйста, предложите.

1 Ответ

0 голосов
/ 20 июня 2019

Запросите все элементы страницы, затем используйте дискриминатор вашего приложения (обычно app-) для сортировки угловых элементов.Как то так:

const allElements = [...document.querySelectorAll('*')];
const angularElements = allElements.filter(el => el.tagName.toLowerCase().startsWith('app-'));

console.log(
  angularElements.length + ' Angular elements found : ' + angularElements
  .map(el => el.tagName.toLowerCase()).join(', ')
);
<app-root>
  <app-component>
    <app-child-one></app-child-one>
    <app-child-two></app-child-two>
  </app-component>
</app-root>

<div></div>
<mat-select></mat-select>
...