HtmlUnit从表单中获取提交按钮的值?

时间:2014-01-05 14:31:00

标签: java htmlunit

<input type="submit" class="submit-button" style="white-space:normal" value="hello world!">

这就是HTML提交按钮的工作方式,在HTMLUNIT我已经获得了表单,使用列表:

HtmlForm form = this.page.getForms().get(0);

但是现在我试图加载的网站在提交按钮上没有id或名称,只是一个类&amp;价值。

我试过这样做:

HtmlButton button = (HtmlButton) page.getByXPath("/html/body//form//input[@type='submit' and @value='Hello world!']");

但是当它加载时,我收到了这个错误:

Exception in thread "Thread-1" java.lang.ClassCastException: java.util.ArrayList cannot be cast to com.gargoylesoftware.htmlunit.html.HtmlButton
    at Web.getButton(Web.java:78)
    at java.lang.Thread.run(Unknown Source)

如何获得没有ID或值的按钮?

3 个答案:

答案 0 :(得分:2)

只需在表单上使用getInputByValue(String)方法:

HtmlForm form = this.page.getForms().get(0);
System.out.println(form.getInputByValue("Hello world!").asXml());

答案 1 :(得分:0)

page.getByXPath("/html/body//form//input[@type='submit' and @value='Hello world!']");返回List

HtmlButton button = (HtmlButton) page.getByXPath("/html/body//form//input[@type='submit' and @value='Hello world!']");会尝试将此List强制转换为HtmlButton,这会导致异常被抛出。

如果您确定只有一个元素将始终与XPath表达式匹配,那么选择列表的第一个(也是唯一的)元素应该是安全的:

HtmlButton button = (HtmlButton) page.getByXPath("/html/body//form//input[@type='submit' and @value='Hello world!']").get(0);

但是,如果我是你,我会为非现有元素添加检查,如果列表包含多个元素。

答案 2 :(得分:0)

使用此

HtmlElement input = form.getElementsByAttribute("input", "value", "hello world!").get(0);

获取元素并单击元素