0

バッチファイルが実行されていない場合は、そのバッチファイルを実行する必要があることを確認するWindowsサービスを作成する必要があるシナリオがあります。

さらに、私のバッチファイルは、アプリケーションのチェックアウトにSeleniumを使用した自動化に使用されます。

そのサービスを作成すると、どういうわけかバッチファイルが実行されず、セレンを起動できません。タスクマネージャーで同じものを見ると、cmdインスタンスが実行されていることがわかりますが、セレンを実行できません。

私のプロジェクトのコード:タイマーは1分に設定されています

private void timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
    if (!File.Exists(ConfigurationManager.AppSettings["testFilePath"])) //To check whether batch file is running or not 
    {
       System.Diagnostics.Process proc = new System.Diagnostics.Process(); // Declare New Process
        proc.StartInfo.FileName = ConfigurationManager.AppSettings["BatchFilePath"];
        proc.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
        proc.StartInfo.CreateNoWindow = true;
        proc.Start();
        proc.WaitForExit();
     }
}

バッチファイルは次のようになります。

copy C:\AutomatedTests\AHD\testingWS.txt C:\AutomatedTests\AHD\AHDExecutionService\testingWS.txt

start cmd /k java -jar "C:\AHS_Automation\Release\UnifiedBillingSystem\Selenium RC\selenium-server-1.0.3\selenium-server.jar"

このコードは、バッチファイルが実行されていない場合はサービスが実行を開始し、そうでない場合は何も実行しないことを定期的にチェックします。

4

1 に答える 1

1

コンテキストがほとんどないためわかりません...しかし、最初に確認するのは、batファイルが使用するファイルに関して、batファイルを実行するパスです。別のプログラムからバット ファイルを呼び出している場合、通常はそのプログラムから環境フォルダーを継承します。これは、ほとんどの人が予期していないことです。(Windows サービスの場合、これは windows\system32 です) これが事実であるかどうかを確認する最も簡単な方法は、bat ファイルの最初の行にパスを明示的に設定することです (例: cd [bat ファイルのパス] )。

于 2012-07-18T12:41:35.600 に答える