htmlunit和document.addEventListener

时间:2014-07-16 21:10:29

标签: jquery htmlunit addeventlistener

我是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");
}

感谢

1 个答案:

答案 0 :(得分:0)

是的,似乎html单位有一个错误。

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

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

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

如果您使用的maven低于3.1,我现在使用的是3.0.4,您无法使用自动为您安装phanom js浏览器的maven插件。在这种情况下,请转到网站并手动下载。

在你的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单元升级到最新版本,或者使用他们的浏览器模拟。 在我的情况下,错误仍然存​​在,我换了ghosty。

干杯。