-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 に設定されていますが、通常のブラウザー セッション (たとえば、ユーザー) は現在の Windows ユーザー アカウントである "IT" に設定されています。

これらのプロセスが呼び出されるユーザーを手動で変更しようとしましたが、今のところうまくいきません。

どうやら、私のアプリケーションは 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 に答える