これは私を残業させており、私はまだ多くの手がかりを持っていません. ローカルにインストールされた 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 に設定されていますが、通常のブラウザー セッション (たとえば、ユーザー) は現在の Windows ユーザー アカウントである "IT" に設定されています。
これらのプロセスが呼び出されるユーザーを手動で変更しようとしましたが、今のところうまくいきません。
どうやら、私のアプリケーションは Windows でも動作しますが、意図したとおりではありません。コマンド ライン スクリプトであるか、Firefox や Chrome などのデスクトップ アプリケーションであるかに関係なく、すべてのプロセスは表示されませんが、ユーザー「SYSTEM」の下でバックグラウンドで実行されます。そして、私には理由がわかりません。デフォルトの動作であるはずのようには見えません。ですから、誰かが何か考えを持っていれば、本当に感謝しています。
ありがとう。