<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或值的按钮?
答案 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);
获取元素并单击元素