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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java和HTMLUnit:如何点击提交按钮?相关的知识,希望对你有一定的参考价值。

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

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

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

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

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

 type="submit" value="submit" name="submit">Enter post code

这是我的代码的样子:

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)得到正确的形式,顺便说一句,通常是一个坏主意,因为如果目标页面略微更改其源代码只是为了添加一个表单,那么你的刮刀赢了“再次工作因为索引会有所不同。

以上是关于Java和HTMLUnit:如何点击提交按钮?的主要内容,如果未能解决你的问题,请参考以下文章

HtmlUnit爬取Ajax动态生成的页面内容

Java HTMLUnit 测试导航按钮

HtmlUnit click() 事件不起作用并在 Java 中触发 ClassCastException

jsp中如何实现点击一个提交按钮,把其中数据提交到数据库同时刷新该页面

如何使用 HtmlUnit 在 aspx 站点中单击超文本链接

高分求教:如何实现java web 按钮点击弹出登陆界面,并登陆