在阅读此论坛一段时间,但刚刚注册,这是我的第一篇文章,所以在这里完成的伟大工作的荣誉。HtmlUnit问题与登录弹出
我正在用Java编写一个程序,目的是使用HtmlUnit连接到我所订阅的杂志之一,登录和搜索感兴趣的文章。一旦我得到这个工作,它会给我发一封电子邮件,但这与我的问题无关。
我不能登录工作:
- 我读的页面
- 查找登录按钮,点击它
- 捕获结果在一个新的页面,提取表单和供应用户名/密码,最后
- 点击登录按钮
如果你点击登录时,弹出来了。但我似乎无法捕捉弹出窗口。
这是我的代码:
public void authenticate() throws MalformedURLException, IOException
{
LogFactory.getFactory().setAttribute("org.apache.commons.logging.Log", "org.apache.commons.logging.impl.NoOpLog");
java.util.logging.Logger.getLogger("com.gargoylesoftware.htmlunit").setLevel(Level.OFF);
java.util.logging.Logger.getLogger("org.apache.commons.httpclient").setLevel(Level.OFF);
WebClient webClient = new WebClient(BrowserVersion.INTERNET_EXPLORER_9);
webClient.getOptions().setJavaScriptEnabled(true);
webClient.getCookieManager().setCookiesEnabled(true);
webClient.getOptions().setThrowExceptionOnScriptError(false);
webClient.getOptions().setPopupBlockerEnabled(false);
webClient.addWebWindowListener(new WebWindowListener()
{
public void webWindowOpened(WebWindowEvent event)
{
System.out.println("a NEW window opened: " + event.getNewPage());
windows.add(event.getWebWindow());
}
@Override
public void webWindowClosed(WebWindowEvent event) {
System.out.println("a window is CLOSED: " + event.getOldPage());
// TODO Auto-generated method stub
}
@Override
public void webWindowContentChanged(WebWindowEvent event) {}
});
// Get the first page
HtmlPage page1 = webClient.getPage("**");
HtmlDivision div = (HtmlDivision) page1.getElementById("topContainer");
HtmlAnchor anchor = (HtmlAnchor) div.getElementById("loginBtn1");
HtmlPage logPage = (HtmlPage) anchor.click();
System.out.println("logPage is: "+logPage);
if (windows.size() > 0)
{
System.out.println("YIOUHOUU");
HtmlPage popupPage = getPopupPage();
System.out.println(popupPage.getTitleText());
}
HtmlForm form = logPage.getFormByName("loginForm");
System.out.println("Form: "+ form);
HtmlTextInput username = form.getInputByName("username");
HtmlPasswordInput password = form.getInputByName("password");
HtmlCheckBoxInput rememberPassword = form.getInputByName("remember");
HtmlCheckBoxInput acceptTerms = logPage.getElementByName("acceptTerms");
HtmlAnchor button = form.getElementById("loginButton");
username.setValueAttribute("USER");
password.setValueAttribute("RANDOM_PASS");
rememberPassword.setChecked(true);
acceptTerms.setChecked(true);
System.out.println(form.toString());
HtmlPage page2 = button.click();
System.out.println(page2.asText());
webClient.closeAllWindows();
}
我得到的登录页面,获取表单和供应等领域。所有这一切都完成了,但是当在第二页上并且点击登录时什么也没有发生。
即使您提交字段并单击SUbmit,也不会发生任何事情。我正在查看HTML页面的源代码,但无法弄清楚为什么,在背景中是否是ajax或其他?
预先感谢任何帮助
@blondeamon你可以请接受这个答案? – 2016-05-04 13:31:17