这是我的一段html
<table class="table_results data ajax" data-uniqueId="20605">
<thead>
</thead>
<tbody>
<tr class="odd">
<td data-decimals="0" data-type="int" class="right data not_null nowrap">1</td>
<td data-decimals="0" data-type="string" data-originallength="5" class="data not_null text ">user1</td>
<td data-decimals="0" data-type="string" data-originallength="40" class="data not_null text ">e38ad214943daad1d64c102faec29de4afe9da3d</td>
<td data-decimals="0" data-type="string" data-originallength="14" class="data not_null text ">user1@mail.com</td>
<td data-decimals="0" data-type="string" data-originallength="6" class="data not_null text ">Smith</td>
<td data-decimals="0" data-type="string" data-originallength="1" class="data not_null text ">"</td>
</tr>
</tbody>
</table>
所以我需要的是检索单元格值。还有一点是,当通过浏览器的源代码选项查看代码时,它看起来和上面的一样。但是当使用firefox的firebug时,它还显示值在
<span></span>
标签
我知道xpath就是解决方案。在过去的两个小时里,我试了很多次,但都没有成功。当然,我也见过类似问题的解决方法,但不知怎么的,它们并不适合我。
我想做的是:
WebElement table_element = driver.findElement(By.xpath("//table//tbody"));
ArrayList<WebElement> rows = (ArrayList<WebElement>) table_element.findElements(By.tagName("tr"));
for (WebElement row : rows) {
ArrayList<WebElement> cells = (ArrayList<WebElement>) row.findElements(By.tagName("//td"));
for (WebElement cell : cells) {
System.out.println(cell.getText());
}
}
4条答案
按热度按时间x7yiwoj41#
svmlkihl2#
找到
td
元素和调用.getText()
方法:在这里,我们使用css选择器来定位表行,然后定位每个表行的行单元格。
8gsdolmq3#
尝试通过以下方式找到您的table:
调试并找到表,然后执行上面的代码:
比如说。。。
gr8qqesn4#
为了补充前面的内容,如果需要从特定行获取文本,可以通过以下方式:
在这种情况下,我使用
td[2]
获取行的第二列并比较用户名。如果你想比较其他领域,你可以改变它。此外,您还可以Assertxpath选择器是否正在工作,或者是否正在使用chrome控制台返回您想要的所有内容: