这一直让我加班,我仍然没有太多线索。我有一个本地安装的 Web 应用程序(伪桌面应用程序),它执行以下操作:
- 启动 SSH 隧道
- 如果在 Mac OS X 上直接运行 ssh
- 如果在 Windows 上,则使用 PuTTy 可执行文件
- 通过 Selenium webdrivers 使用隧道 (localhost:port) 打开配置为使用 Socks5 代理的 Firefox 或 Chrome。
对于 1:我都使用过Runtime.getRuntime().exec(command);
和Process proc = new ProcessBuilder(arguments).start();
,甚至Desktop dt = Desktop.getDesktop(); dt.open(f);
尝试过。但是什么也没发生,没有命令提示符打开。
对于 2:我尝试过同时使用 Firefox:
FirefoxProfile profile = new FirefoxProfile();
profile.setPreference("network.proxy.type", 1);
profile.setPreference("network.proxy.socks", "localhost");
profile.setPreference("network.proxy.socks_port", 8088);
driver = new FirefoxDriver(profile);
和铬:
DesiredCapabilities capabilities = DesiredCapabilities.chrome();
capabilities.setCapability("chrome.switches", Arrays.asList("--proxy-server=socks5://localhost:8088"));
driver = new ChromeDriver(capabilities);
但与 1 类似,没有打开 firefox 或 chrome 窗口。
请注意,此应用程序可以在 Mac OS X Mavericks 上完美运行。
经过几个小时的调试,我注意到进程在那里。所有流程,从 PuTTy 到 Chrome 再到 Firefox。有很多已经在后台运行。奇怪的是这些进程的用户列设置为SYSTEM,而正常的浏览器会话,例如,用户设置为“IT”,这是我当前的Windows用户帐户。
我一直在尝试手动更改调用这些进程的用户,但到目前为止还没有运气。
很明显,我的应用程序也可以在 Windows 中运行,只是不像我想要的那样。所有进程,无论是命令行脚本还是桌面应用程序(如 firefox 或 chrome),它们只是不会出现,而是在用户“SYSTEM”下在后台运行。我不知道为什么。它肯定看起来不应该是默认行为。因此,如果有人有任何想法,我将不胜感激。
谢谢。