java - 如何在tr td的表中定位元素
问题描述
HTML 代码如下:
<div id = ...>
<table ...>
<tbody>
<tr>
<td>
<table ...>
<tr>
<td>
<a onclick="…" class="xl" href="#">1111111</a>
我需要找到值为 111111 的最后一个单元格/元素并单击它。
我试过这些Java:
driver.findElement(By.xpath("//tr/td/a[contains(text(),'111111')]")).click();
driver.findElement(By.cssSelector("a[href='#']")).click();
但它没有用。
任何想法?谢谢
解决方案
为什么不获取表体中所有行的文本集合。
WebElement container = Webdriver.findElement(By.xpath("/*xpath to <tbody> element here*/")).click();
List<WebElement> tableRows = container.findElement(By.tagName("tr"));
List<String> elementText = new ArrayList<>();
tableRows.foreach(x -> elementText.add(x.getText()));
然后搜索该字符串的最后一个索引
int indexOfLast = tableRows.lastIndexOf("1111111");
WebElement theLastElement = elementText.get(indexOfLast);
然后您可以获取最后一个元素并使用它来查找您正在寻找的标记元素。
WebElement myElement = theLastElement.findBy(tagName("a"));
推荐阅读
- menu - 如何在 DNN 中设置 DDR 菜单设置
- c# - 如何将复杂的 C# 类序列化为 XML 并将其作为 .net 核心 API 的响应发送?
- python - 如何将 python 项目连接到我的 HTML CSS 网站
- r - 如果数据大小相同,为什么 TTR 包中的 EMA 会引发错误?(没有足够的非 NA 值错误)
- python - 图像像素中的 Dfs
- swift - 无法转换类型“DataResponse”的值
' 到预期的参数类型 'DataResponse ' - javascript - 日期和时间函数格式
- python - 如何模拟价值 sqlalchemy 模型的混合属性?
- bash - 如何编写一个 bash 脚本来递归计算每个文档中的单词数?
- flutter - 如何在使用颤振从侧面菜单抽屉导航时取消隐藏应用栏和底部导航栏?