-1

这一直让我加班,我仍然没有太多线索。我有一个本地安装的 Web 应用程序(伪桌面应用程序),它执行以下操作:

  1. 启动 SSH 隧道
    • 如果在 Mac OS X 上直接运行 ssh
    • 如果在 Windows 上,则使用 PuTTy 可执行文件
  2. 通过 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”下在后台运行。我不知道为什么。它肯定看起来不应该是默认行为。因此,如果有人有任何想法,我将不胜感激。

谢谢。

4

1 回答 1

0

最后我能够解决这个问题!感谢这篇文章(来自一个看似不相关的案例):

大多数 Windows 服务——包括在 Windows XP 和 Vista 中使用“允许服务与桌面交互”选项运行的服务——无法访问许多计算机资源,包括控制台显示。如果您将 Apache Tomcat 作为 Windows 服务运行并进行任何 GUI 测试,这可能会导致自动 GUI 测试失败。至少对于 AWT 和 Abbot 框架来说是这样。

此限制可以通过不将 Tomcat 作为 Windows 服务运行,而是通过“计划任务”作为在登录时运行的应用程序来解决。有几个选项可以执行此操作,例如运行“$TOMCAT_HOME\bin\tomcat5.exe”。在 Windows Vista 中设置计划任务时,请考虑从常规选项卡中选择“以最高权限运行”复选框,因为这样就无需始终提供管理员权限,并且还可以解决其他问题。

我所做的是不将 tomcat7 作为 Windows 服务运行,而是直接执行C:\Program Files\Apache Software Foundation\Tomcat 7.0\bin\Tomcat7.exe并且一切正常。我可以简单地把它作为一个计划任务,所以它仍然可以自动启动(或者也许只是把它放在启动时)。

于 2015-09-22T17:38:07.807 回答