以百度统计为例,说明下如何用htmlunit登陆带验证码的网站
//baidu统计登陆代码 try { WebClient client = new WebClient(BrowserVersion.INTERNET_EXPLORER_7); client.setJavaScriptEnabled(false); HttpWebConnection httpwebconnection = new HttpWebConnection(client); httpwebconnection.setUseInsecureSSL(true); client.setWebConnection(httpwebconnection); HtmlPage page = client.getPage("http://tongji.baidu.com"); HtmlElement username = page.getElementById("UserName"); HtmlElement password = page.getElementById("Password"); HtmlElement valiCode = page.getElementById("Valicode"); HtmlImage valiCodeImg = (HtmlImage) page.getElementById("cas_code"); ImageReader imageReader = valiCodeImg.getImageReader(); BufferedImage bufferedImage = imageReader.read(0); JFrame f2 = new JFrame(); JLabel l = new JLabel(); l.setIcon(new ImageIcon(bufferedImage)); f2.getContentPane().add(l); f2.setSize(100, 100); f2.setTitle("验证码"); f2.setVisible(true); String valicodeStr = JOptionPane.showInputDialog("请输入验证码:"); f2.setVisible(false); HtmlElement submit = page.getElementById("Submit"); HtmlSubmitInput submit2 = (HtmlSubmitInput) submit; username.click(); username.type("gabazi"); password.click(); password.type("******"); valiCode.click(); valiCode.type(valicodeStr); HtmlPage resultPage = submit2.click(); System.out.println(resultPage.asText()); System.exit(0); } catch(Exception e) { e.printStackTrace(); }