【问题标题】:htmlunit and document.addEventListenerhtmlunit 和 document.addEventListener
【发布时间】:2014-09-07 13:47:00
【问题描述】:

我是 HtmlUnit 的新手。如果这已经被问及回答,请原谅。

我无法让 HtmlUnit 处理使用 JQuery 的页面。更准确地说,我无法让 HtmlUnit 处理任何使用 document.addEventListener() 的 JS 代码,例如 JQuery。例如,以下页面在浏览器中工作,但在 HtmlUnit 中不工作:

<html><head>
<script>
  function atest() {}
  document.addEventListener( "load", atest, false );
</script>
</head>
<body>This page will load in a browser, but not HtmlUnit.</body></html>

产生的错误是:

======= EXCEPTION START ========
EcmaError: lineNumber=[5] column=[0] lineSource=[<no source>] name=[TypeError] sourceName=[script in http://myhost:8080/mpt/dummy from (3, 9) to (6, 10)] message=    [TypeError: Cannot find function addEventListener in object [object]. (script in     http://myhost:8080/mpt/dummy from (3, 9) to (6, 10)#5)]
com.gargoylesoftware.htmlunit.ScriptException: TypeError: Cannot find function addEventListener in object [object]. (script in http://myhost:8080/mpt/dummy from (3, 9) to (6, 10)#5)
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine$HtmlUnitContextAction.run(JavaScriptEngine.java:705)
…

我尝试了几个不同版本的 JQuery 和 HtmlUnit。我确信 HtmlUnit 可以与 JQuery 一起使用(不是吗?),但可能有一个我不知道的问题。所以提示赞赏。我的 JUnit 代码(如果相关)是:

@Test
public void test() throws FailingHttpStatusCodeException, MalformedURLException, IOException {
    WebClient webClient = new WebClient();
    webClient.getPage("http://myhost:8080/mpt/dummy");
}

谢谢

【问题讨论】:

    标签: jquery htmlunit addeventlistener


    【解决方案1】:

    是的,似乎 html 单元有错误。

    https://github.com/searls/jasmine-maven-plugin/issues/135

    最后,我定制了我的 Jasmin maven 插件,以使用 phantom js 无头浏览器运行我的 javascript 测试。

    http://searls.github.io/jasmine-maven-plugin/phantomjs.html

    如果你使用低于 3.1 的 maven,我现在使用的是 3.0.4,你不能使用自动为你安装 phanom js 浏览器的 maven 插件。这种情况就去web端手动下载吧。

    在你的 maven 配置中加入这样的东西。

    <webDriverClassName>org.openqa.selenium.phantomjs.PhantomJSDriver</webDriverClassName>
                            <webDriverCapabilities>
                                <capability>
                                    <name>phantomjs.binary.path</name>
                                    <value>D:\phantomjs-1.9.8\phantomjs.exe</value>
                                  </capability>                             
                            </webDriverCapabilities>
    

    看看你的测试在没有 html 单元的情况下是否更成功。

    您也可以尝试将 html 单元升级到最新版本,或者使用他们的浏览器仿真。 在我的情况下,错误仍然存​​在,我换成了幽灵。

    干杯。

    【讨论】:

      猜你喜欢
      • 2012-08-16
      • 2013-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-01
      • 2020-12-14
      • 1970-01-01
      相关资源
      最近更新 更多