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