【问题标题】:HtmlUnit stops JavaScript execution after a window.openHtmlUnit 在 window.open 之后停止 JavaScript 执行
【发布时间】:2010-08-26 18:12:58
【问题描述】:

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

【问题讨论】:

    标签: java javascript htmlunit


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2013-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多