我目前正在开发一个java应用程序来使用htmlunit记录提供用户名,密码和captha代码的网站。
首先我获取网页并取出captha图像。它运行完美,但问题是当我使用以下代码提交表单时,结果页面html
错过了一个。这是因为我们必须给出时间加载和执行javascript代码,但即使我给你时间执行javascript我也无法得到结果页面。它看起来像生成的页面不等待,当我点击提交时,结果页面的html立即出现但缺少很多html元素。
解决方案似乎是
webClient.waitForBackgroundJavaScript(30 * 1000);
以下是获取captha图像的代码部分。这只能在添加最后wait
行之后正常工作。否则我得到了html缺页
webClient = new WebClient();
url = "http://evarsity.srmuniv.ac.in/srmswi/usermanager/youLogin.jsp";
System.out.println("Loading page now: " + url);
page = webClient.getPage(url);
webClient.waitForBackgroundJavaScript(30 * 1000); /* will wait JavaScript to execute up to 30s */
现在当我提交时我不知道如何等待结果页面而没有立即获得结果。我使用以下代码提交表单并添加等待。但是等待部分不工作。我获取内容错过了html页面。{{ 3}}
HtmlForm form = page.getFormByName("frmStudentMain");
username = form.getInputByName("txtRegNumber");
password = form.getInputByName("txtPwd");
captha = form.getInputByName("txtverifycode");
username.setValueAttribute(uname.getText());
username.setValueAttribute(upass.getText());
captha.setValueAttribute(url);
webClient.getCookieManager().setCookiesEnabled(true);
//final HtmlPage page2 = (HtmlPage) form.getInputByValue("Login").click();
HtmlImage img = (HtmlImage) form.getByXPath("//img[ @onclick ='return submitData();']").get(0);
//webClient.waitForBackgroundJavaScript(1000*30);
final HtmlPage page2 = (HtmlPage) img.click();
webClient.waitForBackgroundJavaScript(1000*30);//something wrong here
澄清这是我的gui