HtmlUnit API for Java(无头浏览器)中的问题?

我正在使用HtmlUnit无头浏览器来浏览这个网页 (你可以看到网页以更好地理解这个问题)。

我已将select的值设置为“1”

http://sofzh.miximages.com/java/14m70up.jpg

通过以下命令

final WebClient webClient = new WebClient(BrowserVersion.INTERNET_EXPLORER_7); try { // Configuring the webClient webClient.setJavaScriptEnabled(true); webClient.setThrowExceptionOnScriptError(false); webClient.setCssEnabled(true); webClient.setUseInsecureSSL(true); webClient.setRedirectEnabled(true); webClient.setActiveXNative(true); webClient.setAppletEnabled(true); webClient.setPrintContentOnFailingStatusCode(true); webClient.setAjaxController(new NicelyResynchronizingAjaxController()); // Adding listeners webClient.addWebWindowListener(new com.gargoylesoftware.htmlunit.WebWindowListener() { public void webWindowOpened(WebWindowEvent event) { numberOfWebWindowOpened++; System.out.println("Number of opened WebWindow: " + numberOfWebWindowOpened); } public void webWindowContentChanged(WebWindowEvent event) { } public void webWindowClosed(WebWindowEvent event) { numberOfWebWindowClosed++; System.out.println("Number of closed WebWindow: " + numberOfWebWindowClosed); } }); webClient.setWebConnection(new HttpWebConnection(webClient) { public WebResponse getResponse(WebRequestSettings settings) throws IOException { System.out.println(settings.getUrl()); return super.getResponse(settings); } }); CookieManager cm = new CookieManager(); webClient.setCookieManager(cm); HtmlPage page = webClient.getPage("http://www.ticketmaster.com/event/0B004354D90759FD?artistid=1073053&majorcatid=10002&minorcatid=207"); HtmlSelect select = (HtmlSelect) page.getElementById("quantity_select"); select.setSelectedAttribute("1", true); 

然后单击以下按钮

http://sofzh.miximages.com/java/a27uv5.jpg

通过以下命令

 HtmlButtonInput button = (HtmlButtonInput) page.getElementById("find_tickets_button"); HtmlPage captchaPage = button.click(); Thread.sleep(60*1000); System.out.println("======captcha page======="); System.out.println(captchaPage.asXml()); 

但即使单击按钮并等待60秒通过Thread.sleep()方法,我得到相同的HtmlPage。

但是,当我通过真正的浏览器做同样的事情,然后我得到包含CAPTCHA的页面。

我想我在htmlunit中遗漏了一些东西。

Q1。 为什么我没有通过htmlunit的浏览器获得相同的页面(包含CAPTCHA)?

该页面上的Web表单需要填写quantity_select下拉列表。您试图通过假设下拉列表是一个select元素在代码中执行此操作。 但是,它不再是选择元素。 尝试使用Firebug检查下拉列表,您将看到JavaScript已使用一组复杂的嵌套div元素替换了select。

如果您弄清楚如何模仿每个用户,请单击该exception下拉菜单的div,然后您应该能够提交表单。