HtmlUnit在window.open之后停止JavaScript执行

时间:2010-08-26 18:12:59

标签: 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对象,它将执行重定向。但是,在升级到HtmlUnit 2.5之后,原始窗口仍然在“请稍候”页面上 - 从不执行重定向。好像JavaScript在调用window.open后停止执行。

如果我手动测试,我已经确认页面行为正确。我在window.open调用之后尝试了不同的JavaScript来确认特定的调用不是问题。

有人知道这样的问题和任何潜在的解决方法吗?由于jQuery兼容性,我们必须继续使用HtmlUnit 2.5。

1 个答案:

答案 0 :(得分:0)

我能够通过从WebClient对象上的Web窗口侦听器中删除CurrentWindowTracker对象来解决此问题。不幸的是,这个字段是完全封装的,所以我不得不通过反射来检索它。

        Field windowListeners = WebClient.class
                .getDeclaredField("webWindowListeners_");
        windowListeners.setAccessible(true);
        Collection webWindowListeners = (Collection) windowListeners
                .get(webClient);
        webWindowListeners.clear();