我有一个网站要测试,其中有一段HTML代码:
<table id="tableid">
<tbody>
<tr class="first">
<td>Hello World</td>
</tr>
<tr class="second">
<td>Bye World</td>
</tr>
</tbody>
</table>
所以我想创建一个 tr -Tags的列表,并使用以下代码迭代它们:
List<WebElement> list = driver.findElements(By.xpath("//table[@id='tableid']/tbody/tr"));
for(WebElement l : list){
System.out.println(l.getAttribute("class"));
System.out.println(l.getLocation());
System.out.println(l.hashCode());
System.out.println(l.findElement(By.xpath("//td")).getText());
}
这四个System.out.println如下:
第一
(32,300)
1573
你好世界
第二
(64,600)
1574
你好世界
所以位置不同,甚至类属性也不同。但是getText方法只返回第一个元素的文本。为什么?我错过了什么吗?做错了什么?我无法理解。
EDIT / UPDATE: 这看起来很奇怪。上面的代码不起作用。如果我执行以下代码,它可以正常工作。有什么解释吗?
List<WebElement> list = driver.findElements(By.xpath("//table[@id='tableid']/tbody/tr/td"));
System.out.println(list.get(0).getText());
System.out.println(list.get(1).getText());
输出:
你好世界
再见世界
答案 0 :(得分:2)
你的XPath错了。 //td
表示“文档中任何位置的任何元素”。请尝试l.findElement(By.xpath("td")).getText()
- 我想您会得到您想要的结果。