2014-07-16 5 views
3

저는 HtmlUnit의 초보자입니다. 이미 물어보고 대답 해 주시면 저에게 실례합니다.htmlunit 및 document.addEventListener

JQuery를 사용하는 페이지에서 HtmlUnit을 사용하는 데 문제가 있습니다. 좀 더 정확히 말하면, HtmlUnit이 JQuery와 같은 document.addEventListener()를 사용하는 모든 JS 코드에서 작동하도록하는 데 문제가 있습니다. 예를 들어, 다음 페이지는 브라우저에서 작동하지만 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와 함께 작동한다고 확신 하나 (그렇습니까?), 그러나 내가 모르는 catch가있을 수 있습니다. 그래서 힌트를 주셔서 감사합니다. 내 JUnit을 코드, 관련하는 경우입니다 :

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

감사

답변

0

그래, 그 HTML 유닛은 버그가 보인다. 결국

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

, 나는 팬텀 JS 헤드리스 (headless) 브라우저를 사용하여 내 자바 스크립트 테스트를 실행하는 플러그인 내 재 스민 받는다는 정의.

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

당신은 내가 지금 3.0.4를 사용하고, 3.1보다 낮은 받는다는을 사용하는 경우, 당신은 자동으로 당신을 위해 파놈의 JS 브라우저를 설치 받는다는 플러그인을 사용할 수 없습니다. 이 경우 웹 사이트로 가서 수동으로 다운로드하십시오.

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 기기를 최신 버전으로 업그레이드하거나 브라우저 에뮬레이션으로 재생해볼 수도 있습니다. 제 경우에는 오류가 지속되었고, 나는 유령으로 바꿨습니다.

건배.