这里的xpath是什么?我正在尝试使用HtmlUnit解析一些html并且无法获取特定表的行。我希望xpath通过caption元素识别表,并返回一个行列表。
<html>
<table>
<caption>table1</caption>
<tr><td>cell 1.1</td><td>cell 1.2</td></tr>
<tr><td>cell 2.1</td><td>cell 2.2</td></tr>
</table>
<table>
<caption>table2</caption>
<tr><td>cell 1-1</td><td>cell 1-2</td></tr>
<tr><td>cell 2-1</td><td>cell 2-2</td></tr>
</table>
</html>
我认为应该工作的xpath是“// caption ['table2'] / parent :: table / tr”但是在线测试人员最终会返回两个表中的所有行,而不仅仅是具有目标标题的行。但是在我自己的java测试中使用HtmlUnit返回一个空列表。那行代码是:
final List<HtmlTableRow> domNodeList = (List<HtmlTableRow>) page.getByXPath("//caption['table2']/parent::table/tr");
任何帮助?
答案 0 :(得分:2)
你不需要去标题只找到桌子。
//table[caption='table2']/tr
答案 1 :(得分:1)
不要试图通过查看页面的源代码在HtmlUnit中使用XPath。你应该:
asXml()
HtmlUnit修改页面的源代码。它不仅仅是美化它而是实际修改它的问题。 EG:添加tbody
以及许多其他更改。所以我敢打赌,这不是HtmlUnit本身的输出。
按照前面的步骤进行操作。