Java和HTMLUnit:如何点击提交按钮?

我是Java的新手,需要编写各种java应用程序来进行Web抓取和网页交互。

我开始使用Selenium,但因为它直接与浏览器交互,所以我的使用不实用。

我需要执行以下任务:1。转到特定URL 2.在输入字段中输入邮政编码3.单击“提交”按钮4.解析并保存特定div标签或重新查询页面的结果。

我正在使用HTMLUnit和Eclipse。 我可以通过引用表单然后输入名称来访问网页并在输入中输入post代码。 但是,当我尝试单击提交按钮时,我收到ElementNotFoundException错误。

以下是如何在页面上实现提交按钮的示例:

  type =“submit”value =“submit”name =“submit”>输入邮政编码

这是我的代码的样子:

package htmlunittest; import java.io.IOException; import java.net.URL; import junit.framework.TestCase; import com.gargoylesoftware.htmlunit.BrowserVersion; import com.gargoylesoftware.htmlunit.Page; import com.gargoylesoftware.htmlunit.RefreshHandler; import com.gargoylesoftware.htmlunit.WebClient; import com.gargoylesoftware.htmlunit.html.HtmlDivision; import com.gargoylesoftware.htmlunit.html.HtmlButtonInput; import com.gargoylesoftware.htmlunit.html.HtmlForm; import com.gargoylesoftware.htmlunit.html.HtmlImage; import com.gargoylesoftware.htmlunit.html.HtmlInput; import com.gargoylesoftware.htmlunit.html.HtmlPage; import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput; import com.gargoylesoftware.htmlunit.html.HtmlTextInput; public class htmlunittest extends TestCase{ @SuppressWarnings("deprecation") public static void main(String[] args) throws Exception { final WebClient webClient = new WebClient(); final HtmlPage startPage = webClient.getPage("http://www.testpage.com"); final HtmlForm form = (HtmlForm) startPage.getForms().get(2); final HtmlTextInput textField = form.getInputByName("address"); textField.setValueAttribute("my post code"); //throws ElementNotFoundException final HtmlSubmitInput button = form.getInputByName("submit"); // Now submit the form by clicking the button and get back the second page. final HtmlPage page2 = button.click(); System.out.println(page2.getHtmlElementById("mainContent")); webClient.closeAllWindows(); } } 

有人可以指出我如何通过HTMLUNIT点击提交按钮的正确方向?

谢谢

如果没有您尝试获取的整个页面,那么找出为什么不能正常工作有点困难。

我敢打赌,你没有使用.get(2)获得正确的表单,顺便说一下,获取表单通常是一个坏主意,因为如果目标页面略微更改其源代码只是为了在上面添加一个表单你的刮刀将无法再次使用,因为索引会有所不同。