2013-09-25 2 views
1

Java에서 애플릿을 실행하기 위해 JSObject 또는 JSContext를 얻는 방법은 무엇입니까?애플릿 실행을위한 JSObject 또는 JSContext 얻기

내가 웹에서 일부 링크 클릭에있다 몇 가지 절차를 자동화하기 위해 노력하고 애플릿을 통해 갈거야, 내가 무엇을 내가 태그와 HTML을 얻을 때까지 자바를 통해 일부 HTTPRequests을 보내되는, JSoup을 통해 필자는 모든 매개 변수와 코드베이스 등을 추출합니다. 애플릿을 실행하려고 할 때 ClassLoader로 애플릿 클래스를로드하고 이전에 추출한 매개 변수를 제공 할 수있는 사용자 정의 스텁을 설정합니다.

이 애플릿은 브라우저와 일부 자바 스크립트 상호 작용을하므로 JSObject.getWindow (애플릿)을 사용하여 문서를 가져 와서 js 호출을 만들고 여기서 내가 막혀있는 곳입니다. 나는 JSContext를 구현해야하는 AppletContext를 제공 할 수 있어야하고 브라우저가 제공하는 것처럼 JSObject를 제공 할 수 있어야한다는 것을 이해한다. 그런 것을 조롱하는 것이 가능한가?

+0

* "하지만 그것은 가능 그런 일을 조롱하는 것입니다?"* 내가 생각 * 한 * http://pscode.org/appleteer/ ([Appleteer]이 ScriptEngine을 사용하여 실제로 시도한 적이 없다. 우리는 JS'document' 객체를 에뮬레이션해야 할 때 페이지에 쓰여진 스크립트를로드하고 해석 할 수있는 시점까지 도달하는 데 상당한 노력을 기울일 것이라고 생각합니다. 방대한 양의 최신 스크립트 및 API로 작업하는 것이 더 어려울 것입니다. 페이지 (URL) 란 무엇입니까? 스크립트는 무엇을합니까? –

+0

@AndrewThompson 페이지 URL을 알려 드리고 싶습니다만 회사의 인트라넷에서만 실행되는 인턴 시스템입니다. 스크립트와 애플릿은 기본적으로 브라우저, 시스템 및 바이러스 백신에 대한 검사를 수행하지만 결국에는 쿠키를 만들고 추가합니다. 내가 시도한 것은 결과 쿠키를 얻기위한 행동 중 일부를 모방하여 프로세스를 자동화 할 수있는 방법입니다. –

답변

0

AppletContextJSContext

private interface JSAwareAppletContext extends AppletContext, JSContext { 
} 

그런 다음 어떻게 든 그래서 당신은 당신이 라이브 연결 물건을 조롱 할 수 있습니다 지금

final JSAwareAppletContext myAppletContext = //mock 

인스턴스를 가지고 조롱 확장하는 interface 생성, 비열한 속임수가있다 JSAwareAppletContext에있는 경우 AppletStub에서 반환하십시오.

Mockito로 예를 들어

:

final JSAwareAppletContext appletContext = mock(JSAwareAppletContext.class); 
final JSObject jsObject = mock(JSObject.class); 
when(appletContext.getJSObject()).thenReturn(jsObject); 
final AppletStub appletStub = mock(AppletStub.class); 
when(appletStub.getAppletContext()).thenReturn(appletContext); 
+0

Amm, 죄송합니다. 내가 잘못 표현했다고 생각합니다. 모의 의사를 말했지만 사용할 올바른 단어가 아닌 것 같습니다. jsObject가 정확히 무엇인지 알고 싶습니다. html 소스에서 생성하거나 AppletStub과 같이 직접 구현할 수 있습니다 (그러나이 클래스가 어떤 방식인지는 알 수 없습니다). 다시 한 번 질문을 잘못 작성해서 죄송합니다. –