Java NicelyResynchronizingAjaxController未按预期工作

Java NicelyResynchronizingAjaxController未按预期工作,java,html-parsing,web-scraping,htmlunit,Java,Html Parsing,Web Scraping,Htmlunit,我需要从中获取数据。由于它有AJAX调用,我决定使用HtmlUnit进行解析 这是我的代码: public class MainPage { final static String baseURI = "http://web1.seattle.gov/courts/cpi/CaseList.aspx"; final static WebClient webClient = new WebClient(BrowserVersion.CHROME); static HtmlPage cur

我需要从中获取数据。由于它有AJAX调用,我决定使用HtmlUnit进行解析

这是我的代码:

public class MainPage {
final static String baseURI = "http://web1.seattle.gov/courts/cpi/CaseList.aspx";
final static WebClient webClient = new WebClient(BrowserVersion.CHROME);    

static HtmlPage currentPage = null;

public static void main(String[] args) {                
    try {                       

        webClient.setAjaxController(new NicelyResynchronizingAjaxController());
        webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);
        webClient.getOptions().setThrowExceptionOnScriptError(false);

        final HtmlPage mainPage = webClient.getPage(baseURI);
        final HtmlForm searchForm = mainPage.getFormByName("form1");

        searchForm.getInputByName("rtbCaseNo").setValueAttribute("203123729");                      
        HtmlPage resultPage = searchForm.getInputByName("btnSrchByCaseNo").click();

        webClient.waitForBackgroundJavaScript(50000);                               
        System.out.println(resultPage.asText());    

    } catch (FailingHttpStatusCodeException | IOException e) {
        e.printStackTrace();
    } 
    finally {
        webClient.closeAllWindows();
    }
}
}

首先,当我单击submit按钮时,似乎根本没有AJAX调用,我看不到类似于:

INFO: Re-synchronized call to http://web1.seattle.gov/courts/cpi/CastList.aspx
其次,我对HtmlUnit有一些例外:

    INFO: Caught script exception
======= EXCEPTION START ========
EcmaError: lineNumber=[729] column=[0] lineSource=[null] name=[TypeError] sourceName=[http://web1.seattle.gov/courts/CPI/ScriptResource.axd?d=wAKJQuapfi2h0tvgddshu6GwSBoo0uJ-Q4zq1fpZG1ZOiNZgZZNomCn_OChvdWzXkxwIbSpMmitsYmDHmDpi-_Muj2-QmYqFjgrU54gChUB4h0YeDFGq7JyV0GIClurbdmC9pRNWwqRbk5gkFzybU7XnF9F4YUtiRPHHsC0TgYUJHhHR0&t=ffffffffdca80a43] message=[TypeError: Cannot read property "disabled" from undefined (http://web1.seattle.gov/courts/CPI/ScriptResource.axd?d=wAKJQuapfi2h0tvgddshu6GwSBoo0uJ-Q4zq1fpZG1ZOiNZgZZNomCn_OChvdWzXkxwIbSpMmitsYmDHmDpi-_Muj2-QmYqFjgrU54gChUB4h0YeDFGq7JyV0GIClurbdmC9pRNWwqRbk5gkFzybU7XnF9F4YUtiRPHHsC0TgYUJHhHR0&t=ffffffffdca80a43#729)]
com.gargoylesoftware.htmlunit.ScriptException: TypeError: Cannot read property "disabled" from undefined (http://web1.seattle.gov/courts/CPI/ScriptResource.axd?d=wAKJQuapfi2h0tvgddshu6GwSBoo0uJ-Q4zq1fpZG1ZOiNZgZZNomCn_OChvdWzXkxwIbSpMmitsYmDHmDpi-_Muj2-QmYqFjgrU54gChUB4h0YeDFGq7JyV0GIClurbdmC9pRNWwqRbk5gkFzybU7XnF9F4YUtiRPHHsC0TgYUJHhHR0&t=ffffffffdca80a43#729)
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine$HtmlUnitContextAction.run(JavaScriptEngine.java:684)
    at net.sourceforge.htmlunit.corejs.javascript.Context.call(Context.java:602)
    at net.sourceforge.htmlunit.corejs.javascript.ContextFactory.call(ContextFactory.java:507)
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.callFunction(JavaScriptEngine.java:616)
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.callFunction(JavaScriptEngine.java:591)
    at com.gargoylesoftware.htmlunit.html.HtmlPage.executeJavaScriptFunctionIfPossible(HtmlPage.java:985)
    at com.gargoylesoftware.htmlunit.javascript.host.EventListenersContainer.executeEventListeners(EventListenersContainer.java:177)
    at com.gargoylesoftware.htmlunit.javascript.host.EventListenersContainer.executeBubblingListeners(EventListenersContainer.java:237)
    at com.gargoylesoftware.htmlunit.javascript.host.Node.fireEvent(Node.java:804)
    at com.gargoylesoftware.htmlunit.javascript.host.Node.fireEvent(Node.java:738)
    at com.gargoylesoftware.htmlunit.html.HtmlElement$1.run(HtmlElement.java:869)
    at net.sourceforge.htmlunit.corejs.javascript.Context.call(Context.java:602)
    at net.sourceforge.htmlunit.corejs.javascript.ContextFactory.call(ContextFactory.java:507)
    at com.gargoylesoftware.htmlunit.html.HtmlElement.fireEvent(HtmlElement.java:874)
    at com.gargoylesoftware.htmlunit.html.HtmlElement.doClickFireClickEvent(HtmlElement.java:1311)
    at com.gargoylesoftware.htmlunit.html.HtmlElement.click(HtmlElement.java:1253)
    at com.gargoylesoftware.htmlunit.html.HtmlElement.click(HtmlElement.java:1205)
    at com.gargoylesoftware.htmlunit.html.HtmlElement.click(HtmlElement.java:1160)
    at MainPage.main(MainPage.java:29)
Caused by: net.sourceforge.htmlunit.corejs.javascript.EcmaError: TypeError: Cannot read property "disabled" from undefined (http://web1.seattle.gov/courts/CPI/ScriptResource.axd?d=wAKJQuapfi2h0tvgddshu6GwSBoo0uJ-Q4zq1fpZG1ZOiNZgZZNomCn_OChvdWzXkxwIbSpMmitsYmDHmDpi-_Muj2-QmYqFjgrU54gChUB4h0YeDFGq7JyV0GIClurbdmC9pRNWwqRbk5gkFzybU7XnF9F4YUtiRPHHsC0TgYUJHhHR0&t=ffffffffdca80a43#729)
    at net.sourceforge.htmlunit.corejs.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3603)
    at net.sourceforge.htmlunit.corejs.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3587)
    at net.sourceforge.htmlunit.corejs.javascript.ScriptRuntime.typeError(ScriptRuntime.java:3608)
    at net.sourceforge.htmlunit.corejs.javascript.ScriptRuntime.typeError2(ScriptRuntime.java:3624)
    at net.sourceforge.htmlunit.corejs.javascript.ScriptRuntime.undefReadError(ScriptRuntime.java:3634)
    at net.sourceforge.htmlunit.corejs.javascript.ScriptRuntime.getObjectPropNoWarn(ScriptRuntime.java:1488)
    at net.sourceforge.htmlunit.corejs.javascript.Interpreter.interpretLoop(Interpreter.java:1233)
    at net.sourceforge.htmlunit.corejs.javascript.Interpreter.interpret(Interpreter.java:798)
    at net.sourceforge.htmlunit.corejs.javascript.InterpretedFunction.call(InterpretedFunction.java:105)
    at net.sourceforge.htmlunit.corejs.javascript.ContextFactory.doTopCall(ContextFactory.java:405)
    at com.gargoylesoftware.htmlunit.javascript.HtmlUnitContextFactory.doTopCall(HtmlUnitContextFactory.java:309)
    at net.sourceforge.htmlunit.corejs.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3031)
    at net.sourceforge.htmlunit.corejs.javascript.InterpretedFunction.call(InterpretedFunction.java:103)
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine$4.doRun(JavaScriptEngine.java:609)
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine$HtmlUnitContextAction.run(JavaScriptEngine.java:669)
    ... 18 more
Enclosed exception: 
net.sourceforge.htmlunit.corejs.javascript.EcmaError: TypeError: Cannot read property "disabled" from undefined (http://web1.seattle.gov/courts/CPI/ScriptResource.axd?d=wAKJQuapfi2h0tvgddshu6GwSBoo0uJ-Q4zq1fpZG1ZOiNZgZZNomCn_OChvdWzXkxwIbSpMmitsYmDHmDpi-_Muj2-QmYqFjgrU54gChUB4h0YeDFGq7JyV0GIClurbdmC9pRNWwqRbk5gkFzybU7XnF9F4YUtiRPHHsC0TgYUJHhHR0&t=ffffffffdca80a43#729)
    at net.sourceforge.htmlunit.corejs.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3603)
    at net.sourceforge.htmlunit.corejs.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3587)
    at net.sourceforge.htmlunit.corejs.javascript.ScriptRuntime.typeError(ScriptRuntime.java:3608)
    at net.sourceforge.htmlunit.corejs.javascript.ScriptRuntime.typeError2(ScriptRuntime.java:3624)
    at net.sourceforge.htmlunit.corejs.javascript.ScriptRuntime.undefReadError(ScriptRuntime.java:3634)
    at net.sourceforge.htmlunit.corejs.javascript.ScriptRuntime.getObjectPropNoWarn(ScriptRuntime.java:1488)
    at net.sourceforge.htmlunit.corejs.javascript.Interpreter.interpretLoop(Interpreter.java:1233)
    at script.Sys$WebForms$PageRequestManager$_onFormElementActive(http://web1.seattle.gov/courts/CPI/ScriptResource.axd?d=wAKJQuapfi2h0tvgddshu6GwSBoo0uJ-Q4zq1fpZG1ZOiNZgZZNomCn_OChvdWzXkxwIbSpMmitsYmDHmDpi-_Muj2-QmYqFjgrU54gChUB4h0YeDFGq7JyV0GIClurbdmC9pRNWwqRbk5gkFzybU7XnF9F4YUtiRPHHsC0TgYUJHhHR0&t=ffffffffdca80a43:729)
    at script.Sys$WebForms$PageRequestManager$_onFormElementClick(http://web1.seattle.gov/courts/CPI/ScriptResource.axd?d=wAKJQuapfi2h0tvgddshu6GwSBoo0uJ-Q4zq1fpZG1ZOiNZgZZNomCn_OChvdWzXkxwIbSpMmitsYmDHmDpi-_Muj2-QmYqFjgrU54gChUB4h0YeDFGq7JyV0GIClurbdmC9pRNWwqRbk5gkFzybU7XnF9F4YUtiRPHHsC0TgYUJHhHR0&t=ffffffffdca80a43:751)
    at script(http://web1.seattle.gov/courts/CPI/ScriptResource.axd?d=GzSW1c3NKsncPwlvGy3qGT-vozDnuoTbJRITSlPr6OEXzpdb1saFCmLwjRyqYfH5pta6HhEtCCU0x1VKNwmwJGlYwl2L_LdE-PxNHQjfNmEnmdhuyKvS5W28hsds4a5GmaIHjebqkMQ1yQVwZheqwC9K9wwuMr2kLfxJsg2&t=ffffffffdca80a43:47)
    at script(http://web1.seattle.gov/courts/CPI/ScriptResource.axd?d=GzSW1c3NKsncPwlvGy3qGT-vozDnuoTbJRITSlPr6OEXzpdb1saFCmLwjRyqYfH5pta6HhEtCCU0x1VKNwmwJGlYwl2L_LdE-PxNHQjfNmEnmdhuyKvS5W28hsds4a5GmaIHjebqkMQ1yQVwZheqwC9K9wwuMr2kLfxJsg2&t=ffffffffdca80a43:2948)
    at net.sourceforge.htmlunit.corejs.javascript.Interpreter.interpret(Interpreter.java:798)
    at net.sourceforge.htmlunit.corejs.javascript.InterpretedFunction.call(InterpretedFunction.java:105)
    at net.sourceforge.htmlunit.corejs.javascript.ContextFactory.doTopCall(ContextFactory.java:405)
    at com.gargoylesoftware.htmlunit.javascript.HtmlUnitContextFactory.doTopCall(HtmlUnitContextFactory.java:309)
    at net.sourceforge.htmlunit.corejs.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3031)
    at net.sourceforge.htmlunit.corejs.javascript.InterpretedFunction.call(InterpretedFunction.java:103)
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine$4.doRun(JavaScriptEngine.java:609)
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine$HtmlUnitContextAction.run(JavaScriptEngine.java:669)
    at net.sourceforge.htmlunit.corejs.javascript.Context.call(Context.java:602)
    at net.sourceforge.htmlunit.corejs.javascript.ContextFactory.call(ContextFactory.java:507)
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.callFunction(JavaScriptEngine.java:616)
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.callFunction(JavaScriptEngine.java:591)
    at com.gargoylesoftware.htmlunit.html.HtmlPage.executeJavaScriptFunctionIfPossible(HtmlPage.java:985)
    at com.gargoylesoftware.htmlunit.javascript.host.EventListenersContainer.executeEventListeners(EventListenersContainer.java:177)
    at com.gargoylesoftware.htmlunit.javascript.host.EventListenersContainer.executeBubblingListeners(EventListenersContainer.java:237)
    at com.gargoylesoftware.htmlunit.javascript.host.Node.fireEvent(Node.java:804)
    at com.gargoylesoftware.htmlunit.javascript.host.Node.fireEvent(Node.java:738)
    at com.gargoylesoftware.htmlunit.html.HtmlElement$1.run(HtmlElement.java:869)
    at net.sourceforge.htmlunit.corejs.javascript.Context.call(Context.java:602)
    at net.sourceforge.htmlunit.corejs.javascript.ContextFactory.call(ContextFactory.java:507)
    at com.gargoylesoftware.htmlunit.html.HtmlElement.fireEvent(HtmlElement.java:874)
    at com.gargoylesoftware.htmlunit.html.HtmlElement.doClickFireClickEvent(HtmlElement.java:1311)
    at com.gargoylesoftware.htmlunit.html.HtmlElement.click(HtmlElement.java:1253)
    at com.gargoylesoftware.htmlunit.html.HtmlElement.click(HtmlElement.java:1205)
    at com.gargoylesoftware.htmlunit.html.HtmlElement.click(HtmlElement.java:1160)
    at MainPage.main(MainPage.java:29)
== CALLING JAVASCRIPT ==

  function (e) {
      return handler.call(element, new Sys.UI.DomEvent(e));
  }

======= EXCEPTION END ========
所以我猜,由于加载JS时出现的这些异常,导致JS在客户端站点上运行时出现问题


有什么想法吗?

只需将BrowserVersio设置为firefox并删除nicelySynchronizingAjaxController。 让webClient.waitForBackgroundJavaScript(50000);在获得新的HtmlPage之前和之后


这可能会有帮助,谢谢!事实上,我在发布这个问题之前已经看过你的答案了。