2012-01-03 7 views
1

자동화 스크립팅을 수행하고 있으며 내용을 확인하기 위해 iframe에서 데이터를 읽어야합니다. 내 자바 코드에서TypeError : 객체에서 getElementById 함수를 찾을 수 없습니다.

ScriptEngineManager scriptEngineManager = new ScriptEngineManager(); 
ScriptEngine scriptEngine = scriptEngineManager.getEngineByName("ECMAScript"); 
try 
{ 
    scriptEngine.eval(new FileReader("readIFrameContent.js")); 
} 
catch (ScriptException e) 
{ 
    e.printStackTrace(); 
} 

및 readIFrameContent.js는

function getContentFromIframe(iFrameName) 
{ 
    var myIFrame = document.getElementById(iFrameName); 
    var content = myIFrame.contentWindow.document.body.innerHTML; 
    alert('content: ' + content); 
} 

입니다하지만 오류가 발생합니다.

javax.script.ScriptException: sun.org.mozilla.javascript.internal.EcmaError: ReferenceError: "document" is not defined. (#3) in at line number 3

그래서 나는 해결책을 인터넷 검색 및 기능

function getContentFromIframe(iFrameName) 
{ 
    var document = new Object(); 
    var myIFrame = document.getElementById(iFrameName); 
    var content = myIFrame.contentWindow.document.body.innerHTML; 
    alert('content: ' + content); 
} 

을 편집하고 이제 오류가

javax.script.ScriptException: sun.org.mozilla.javascript.internal.EcmaError: TypeError:
Cannot find function getElementById in object [object Object]. (#4) in at line number 4

제안하십시오입니다.

+0

아마도 웹 브라우저를 통해 실행하지 않기 때문에 문서 나 창을 가지고 있지 않습니다. 맞습니까? –

+0

실제로 셀레늄에 종사하고 있습니다. 웹 브라우저를 사용하지만 몇 가지 기능 만 사용할 수 있습니다. 이것에 대한 해결책이 있습니까? –

+0

죄송합니다. 한 가지 확실한 점은, 허공에서 문서를 만들 수는 없습니다. –

답변

0

문이 필요 없다고 생각합니다. var document = new Object(); 코드는이 문장없이 작동합니다.

+0

아니요. 앞에서 설명한 것처럼 var document = new Object()가 없으면 "javax.script.ScriptException : sun.org.mozilla.javascript.internal.EcmaError : ReferenceError :"document "가 정의되지 않았습니다. (# 3)에서 행 번호 3 " –

관련 문제