如何在htmlunit中获取第二个表和第三个同名表

时间:2013-06-23 16:37:14

标签: java htmlunit

我正在使用HtmlUnit和java。在我的页面中,我有很多表,但有4个表具有相同的名称和相同的属性。我想分别处理这4个表。如何在这4个表中获得第二个表和第三个表?

2 个答案:

答案 0 :(得分:0)

你有办法传递页面中的所有对象,只需传递元素以在这种情况下选择“table”,以获得一个数组x中的所有表。

var x = getElementsByTagName("table");
var nTables = x.length

现在很容易,数组x的第一个元素是第一个表,依此类推。

结论:对于对象,不需要知道名称,ID ......来到任何页面上的每个对象,只需获取所需的所有元素,然后将实例变为实例变量并进行比较。

非常好:))

答案 1 :(得分:0)

使用getElementsByName()getElementsByXpath()。这两个函数都返回一个HtmlElements列表,但是在XPath上你可以过滤只获取desided表。

final WebClient web = new WebClient();
final Page page = web.getPage("...");
List<?> tables = page.getElementsByName("repetitive_table_name");
HtmlElement secondTable = (HtmlElement) tables.get(1);
HtmlElement thirdTable = (HtmlElement) tables.get(2);

final WebClient web = new WebClient();
final Page page = web.getPage("...");
// This will return like the getElementsByName
List<?> tables = page.getElementsByXpath("//table[@id='repetitive_table_name']");
HtmlElement secondTable = (HtmlElement) tables.get(1);
HtmlElement thirdTable = (HtmlElement) tables.get(2);