HtmlUnit / XPath查找带有标题的表行

时间:2013-10-23 06:20:35

标签: xpath htmlunit

这里的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");

任何帮助?

2 个答案:

答案 0 :(得分:2)

你不需要去标题只找到桌子。

//table[caption='table2']/tr

答案 1 :(得分:1)

不要试图通过查看页面的源代码在HtmlUnit中使用XPath。你应该:

  1. 获取页面
  2. 使用asXml()
  3. 输出内容
  4. 根据
  5. 构建XPath表达式

    HtmlUnit修改页面的源代码。它不仅仅是美化它而是实际修改它的问题。 EG:添加tbody以及许多其他更改。所以我敢打赌,这不是HtmlUnit本身的输出。

    按照前面的步骤进行操作。