Java 获取JSObject或JSContext以运行小程序

Java 获取JSObject或JSContext以运行小程序,java,applet,jsobject,Java,Applet,Jsobject,如何获取JSObject或JSContext以从Java运行小程序 我正在尝试自动化一些过程,包括在web中单击一些链接,然后遍历一个小程序,所以我要做的是通过Java发送一些HTTPRequests,直到我得到一个带有标记的HTML,通过JSoup,我从中提取所有参数和代码库等。因为我也想运行小程序,我用一个类加载器加载applet类,我设置了一个自定义存根,它可以给出我以前提取的参数 问题是这个小程序与浏览器有一些javascript交互,所以在某个时候它会执行一个JSObject.getW

如何获取JSObject或JSContext以从Java运行小程序

我正在尝试自动化一些过程,包括在web中单击一些链接,然后遍历一个小程序,所以我要做的是通过Java发送一些HTTPRequests,直到我得到一个带有标记的HTML,通过JSoup,我从中提取所有参数和代码库等。因为我也想运行小程序,我用一个类加载器加载applet类,我设置了一个自定义存根,它可以给出我以前提取的参数


问题是这个小程序与浏览器有一些javascript交互,所以在某个时候它会执行一个JSObject.getWindow(小程序)来获取文档并进行js调用,这就是我遇到的问题。我知道我必须能够提供一个AppletContext,它应该实现一个JSContext,并且能够提供这个JSObject,它是浏览器提供的窗口。但是有可能模仿这样的事情吗?

有一个诡计,首先创建一个
接口,扩展
AppletContext
JSContext

private interface JSAwareAppletContext extends AppletContext, JSContext {
}
然后以某种方式模仿它,这样你就有了一个实例

final JSAwareAppletContext myAppletContext = //mock
现在,您可以在
jsawarearelatecontext
上模拟实时连接,并从
AppletStub
返回if

例如,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);

有一个诡计,首先创建一个
接口
,扩展
AppletContext
JSContext

private interface JSAwareAppletContext extends AppletContext, JSContext {
}
然后以某种方式模仿它,这样你就有了一个实例

final JSAwareAppletContext myAppletContext = //mock
现在,您可以在
jsawarearelatecontext
上模拟实时连接,并从
AppletStub
返回if

例如,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);

嗯,对不起,我想我表达错了,我说mock,但我认为它不是正确的词,因为我想得到的正是jsObject,也许它可以从html源代码生成,或者像AppletStub一样实现它(但不知道这个类应该是什么样的)或者其他什么。我再次为我对这个问题的糟糕表述感到抱歉。嗯,我很抱歉,我认为我表达错误了,我说了mock,但我认为它不是合适的词,因为我想要得到的正是jsObject,也许它可以从html源代码生成,或者像AppletStub一样自己实现它(但不知道这门课应该是什么样子)或其他什么。我再次为我对这个问题的糟糕表述感到抱歉。“但有可能嘲笑这样的事情吗?”我在使用
ScriptEngine
时考虑过这一点,但实际上从未尝试过。我想,如果我们需要模拟JS
文档
对象,那么要让它能够加载和解释页面中编写的脚本,需要付出相当大的努力API将更加困难。页面(URL)是什么?脚本的作用是什么?@AndrewThompson我想给你一个页面URL,但它是一个实习生系统,只在公司内部网中运行。脚本和小程序基本上对浏览器、系统操作系统和防病毒程序进行一些检查,但最终它创建并添加了一个cookie。我试图做的是模仿一些behaviour想要得到最终的cookie,这样我就能够自动化这个过程。“但是有可能模仿这样的事情吗?”我在使用
ScriptEngine
时考虑过这一点,但实际上从未尝试过。我想,如果我们需要模拟JS
文档
对象,那么要让它能够加载和解释页面中编写的脚本,需要付出相当大的努力API将更加困难。页面(URL)是什么?脚本的作用是什么?@AndrewThompson我想给你一个页面URL,但它是一个实习生系统,只在公司内部网中运行。脚本和小程序基本上对浏览器、系统操作系统和防病毒程序进行一些检查,但最终它创建并添加了一个cookie。我试图做的是模仿一些behaviour想要得到最终的cookie,这样我就能够自动化这个过程。