使用htmlunit在asp动态页面中填写表单

时间:2016-09-03 14:24:52

标签: java web-scraping htmlunit

我在java中制作一个小脚本来检查iPhone IMEI号码。 这个网站来自Apple: here

您必须输入IMEI号码。如果此数字正常,则会将您带到此页面: https://appleonlinefra.mpxltd.co.uk/search.aspx 此外,您还可以访问 /search.aspx 页面 我想打开搜索页面,输入IMEI,提交,并检查URL是否已更改。在我的代码中有一个有效的IMEI编号。

这是我的java代码:

HtmlPage page = webClient.getPage("https://appleonlinefra.mpxltd.co.uk/search.aspx");

HtmlTextInput imei_input = (HtmlTextInput)page.getElementById("ctl00_ContentPlaceHolder1_txtIMEIVal");

imei_input.setValueAttribute("012534008614194");

//HtmlAnchor check_imei = page.getAnchorByText("Rechercher");
//Tried with both ways of getting the anchor, none works

HtmlAnchor anchor1 = (HtmlAnchor)page.getElementById("ctl00_ContentPlaceHolder1_imeiValidate");
page = anchor1.click();

System.out.println(page.getUrl());

我无法找到它的来源,因为我经常使用HTMLUnit,我从来没有遇到过这个问题。也许是因为提交后的加载时间很短?

提前谢谢

1 个答案:

答案 0 :(得分:0)

您可以使用HTMLUnit提供的连接包装器

来完成此操作

这是一个例子

    new WebConnectionWrapper(webClient) {

        public WebResponse getResponse(WebRequest request) throws IOException {
            WebResponse response = super.getResponse(request);
            if (request.getUrl().toExternalForm().contains("Inspection.aspx")) {
                String content = response.getContentAsString("UTF-8");

                WebResponseData data = new WebResponseData(content.getBytes("UTF-8"), response.getStatusCode(),
                        response.getStatusMessage(), response.getResponseHeaders());
                response = new WebResponse(data, request, response.getLoadTime());
            }
            return response;
        }
    };

使用上面的连接包装器,您可以检查通过HTMLUnit

传递的任何请求和响应