问题描述
我正在使用 HtmlUnit 加载包含动态更新的 ajax 组件的网页,使用以下内容:-
WebClient webClient = new WebClient(browserVersion.CHROME);
URL url = new URL("https://live.xxx.com/en/ajax/getDetailedQuote/" + instrument);
WebRequest requestSettings = new WebRequest(url,HttpMethod.POST);
HtmlPage redirectPage = webClient.getPage(requestSettings);
不过,我希望能够监控和响应页面上的更改。
我尝试了以下方法:-
webClient.addWebWindowListener(new WebWindowListener() {
public void webWindowContentChanged(WebWindowEvent event) {
System.out.println("Content changed ");
}
});
但我只在页面首次加载时收到“内容已更改”,而不是在页面更新时收到。
解决方法
我担心 HtmlUnit 并没有真正的解决方案(至少不是开箱即用的)。仅当窗口内的(整个)页面被替换时才会调用 webWindowContentChanged 钩子。
您可以尝试实现 DomChangeListener 并将其附加到页面(或者可能是页面的正文)。
如果您想在 http 级别更多地跟踪 ajax 请求,您可以选择拦截请求(有关详细信息,请参阅 https://htmlunit.sourceforge.io/faq.html#HowToModifyRequestOrResponse)。
如果您需要更多,请打开一个问题,我们可以讨论。