2014-01-05 38 views
1
<input type="submit" class="submit-button" style="white-space:normal" value="hello world!"> 

这是怎样的HTML提交按钮的作品,在我的HtmlUnit已经得到形式,使用列表:HtmlUnit通过它的值从表单提交按钮?

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

但现在该网站即时通讯试图负载没有ID或名称上提交按钮,只是一个类&的值。

我试着这样做:

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或价值?

回答

2

只需使用getInputByValue(String)方法的形式:

HtmlForm form = this.page.getForms().get(0); 
System.out.println(form.getInputByValue("Hello world!").asXml()); 
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); 

如果我是你,然而, ,我会添加对现有元素的检查,如果列表包含多个元素。

0

使用此

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

获得元素,然后单击该元素