0

我最近从 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。

4

1 回答 1

0

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

        Field windowListeners = WebClient.class
                .getDeclaredField("webWindowListeners_");
        windowListeners.setAccessible(true);
        Collection webWindowListeners = (Collection) windowListeners
                .get(webClient);
        webWindowListeners.clear();
于 2010-08-26T19:33:04.557 回答