java - 如何使用 Selenium Webdriver 从 Angular 应用程序获取所有 WebElement?

标签 java angular selenium-webdriver

基本上,我想获取网页上的所有 WebElement。我正在使用下面的内容,它对于静态 HTML 页面运行良好。

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

但是在 Angular 页面上,我无法获取所有元素(由于 HTML 页面中使用的指令)。

页面查看源代码是这样的:

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

Endgame 是创建一个在页面上生成定位器的工具,我使用 Java 和 selenium-wd 来实现它。如果有更好的方法,请提出。

最佳答案

查询页面的所有元素,然后使用应用程序鉴别器(通常是 app-)对 Angular 元素进行排序。像这样的事情:

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>

关于java - 如何使用 Selenium Webdriver 从 Angular 应用程序获取所有 WebElement?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56686043/

相关文章:

java - 如何在 Java8 中使用 selenium 切换回父窗口

重启机器后Java类路径不存在

java - 枚举值是否在类的所有实例之间共享?

angular - Web OTP API Typescript Typings 问题 - TypeScript 中缺少类型

highcharts - 将回调函数传递给 typescript 中 highchart 图例中的 labelFormatter

javascript - 在 Angular 2 中传递更改事件的参数

java - Selenium 驱动程序无法加载某些页面的所有元素

java - 如何将Object转换为 "original"类型

java - 有没有开源的社交客户端android app

java - 从 App Engine 构建缓存时如何平衡负载?