HtmlUnit在window.open之后停止JavaScript执行
我最近将HTMLUnit 2.4更新为2.5(我们会选择最新版本,但由于不推荐使用的API,有很多代码需要重构)。我现在遇到了一些打开窗口的JavaScript问题 正在测试的页面是报告的“加载屏幕时请稍候”。页面打开一个新窗口,然后重定向回最初启动打印的页面 因此JavaScript看起来像:HtmlUnit在window.open之后停止JavaScript执行,java,javascript,htmlunit,Java,Javascript,Htmlunit,我最近将HTMLUnit 2.4更新为2.5(我们会选择最新版本,但由于不推荐使用的API,有很多代码需要重构)。我现在遇到了一些打开窗口的JavaScript问题 正在测试的页面是报告的“加载屏幕时请稍候”。页面打开一个新窗口,然后重定向回最初启动打印的页面 因此JavaScript看起来像: window.open(url,'report_window'); document.location.href = original_url; 使用HtmlUnit 2.4,脚本将继续执行,如果我
window.open(url,'report_window');
document.location.href = original_url;
使用HtmlUnit 2.4,脚本将继续执行,如果我抓取原始窗口对象,它将执行重定向。然而,升级到HtmlUnit 2.5后,原始窗口仍在“请等待”页面上-重定向从未执行。似乎JavaScript在调用window.open后停止执行
如果我手动测试,我已确认页面行为正确。我还在window.open调用之后尝试了不同的JavaScript,以确认该调用不是问题所在
有人知道这样的问题和任何潜在的解决办法吗?由于jQuery的兼容性,我们不得不继续使用HtmlUnit 2.5。我能够通过从WebClient对象的web窗口侦听器中删除CurrentWindowTracker对象来解决这个问题。不幸的是,这个字段是完全封装的,所以我必须通过反射来检索它
Field windowListeners = WebClient.class
.getDeclaredField("webWindowListeners_");
windowListeners.setAccessible(true);
Collection webWindowListeners = (Collection) windowListeners
.get(webClient);
webWindowListeners.clear();