java - Selenium:在获取 DOM 元素列表后查找子标签
问题描述
首先,我是一名负责处理 Selenium 的 Javascript 开发人员,我现在感受到 QE 所经历的痛苦,哈哈,所以我对 Java 的了解是基本的。我有以下 DOM 结构,我需要能够找到“链接名称 1”并单击它。我也必须对不同测试中的其他链接做同样的事情。
<div class="some-container">
<div class="blah"></div>
<div>
<div>
<div class="common-class-name">
<a>Link Name 1</a>
</div>
</div>
<div>
<div class="common-class-name">
<a>Link Name 2</a>
</div>
</div>
<div>
<div class="common-class-name">
<a>Link Name 3</a>
</div>
</div>
</div>
</div>
<div class="some-other-container">
<div class="blah"></div>
<div>
<div>
<div class="common-class-name">
<a>Link Name 1</a>
</div>
</div>
<div>
<div class="common-class-name">
<a>Link Name 2</a>
</div>
</div>
<div>
<div class="common-class-name">
<a>Link Name 3</a>
</div>
</div>
</div>
</div>
这是我尝试过的事情之一,findElementsWithWait 基本上是一个实用函数,它使用 findElements 和等待。这不起作用。
List<WebElement> list = findElementsWithWait(By.className("common-class-name"));
for (WebElement element: list) {
WebElement el = element.findElement(By.tagName("a"));
String text = el.getText();
// other code would check for the proper text and click...
}
获取标签列表以便能够根据文本值单击它们的最佳方法是什么?
解决方案
尝试通过链接文本搜索每个锚节点:
By.linkText("Link Name 1")
如果有多个链接具有相同的文本和唯一的祖先,然后尝试通过 XPATH 搜索
By.xpath("//div[@class='some-container']//a[.='Link Name 1']")
By.xpath("//div[@class='some-other-container']//a[.='Link Name 1']")
推荐阅读
- python - 在 Python 中使用一个列表推导查找两列中的点列表之间的距离
- java - 如何使用 Java SE 8 Stream API 实现这一点?
- python - 如何包含不存在 zip 循环中的所有元素的行?
- php - UpdateOrCreate 不适用于数组字段
- youtube-api - 报告某些项目的 Youtube 视频端点返回持续时间“P0D”
- amazon-s3 - 分配有 S3 完全访问角色的 EC2 实例中的用户无法访问 S3
- parsing - 我如何解析这个输出?
- mongodb - mongodb聚合或循环
- get - 从 Google Docs API 中的建议 ID 获取有关建议的信息
- django - TypeError 'bool' 对象在 Django 中不可调用