1

Teleriks Test Studio の試用版を使用していますが、Silverlight アプリケーションで問題が発生しています。私のテストでは、ログインしてから、データ ソースから 100 人の新しいユーザーを追加しようとしています。テストを複数回実行しましたが、失敗するたびに同じことをしているように見えます。Unable to locate elementエラーでスタックしますが、失敗した場合はテストを再開する必要があると理解していました。しかし、そうではありません。代わりに、他の要素を見つけることができず、ただそこに座っています

これは一貫性のないエラーだと言わざるを得ません。これは常にテストの別の段階にあります。10 個のテストを完全に実行しても、次のテストが失敗する場合があります。

失敗を引き起こす方法はありますclose current browser and open new browserか、または最初のステップとしてブラウザを閉じて開くステップを追加する方法はありますか? ブラウザが応答しない場合、ブラウザを閉じて再度開くにはどうすればよいですか?

4

1 に答える 1

1

Telerik のヘルプ フォーラムから:

[Setup]
if (Manager.Current.Browsers.Count > 1)
{
   Helpers.KillBrowserProcesses(_browserType);
}

if (ActiveBrowser == null || !Process.GetProcessesByName(_processName).Any())
{
   var retries = 0;
   bool browserOpened;
   do
   {
      try
      {
         browserOpened = true;
         Manager.LaunchNewBrowser(_browserType, true, ProcessWindowStyle.Maximized);
         retries = 0;
      }
      catch
      {
         retries++;
         browserOpened = false;
         Console.WriteLine("Restarting the browser. Retry {0} of {1}", retries,
                                      Configuration.Instance.BrowserOpeningRetries);
         if (Manager.Browsers.Count <= 0) continue;
            Helpers.KillBrowserProcesses(_browserType);
            //foreach (var browser in Manager.Browsers)
            //    browser.Close();
            //if (ActiveBrowser != null)
            //    ActiveBrowser.Close();
      }
   } 
   while (retries < Configuration.Instance.BrowserOpeningRetries && browserOpened == false);
}

public static void KillBrowserProcesses(BrowserType browserType)
{
   var browserProcesses = new Process[] {};
   switch (browserType)
   {
      case BrowserType.FireFox:
         browserProcesses = Process.GetProcessesByName("firefox");
         break;
      case BrowserType.InternetExplorer:
         browserProcesses = Process.GetProcessesByName("iexplore");
         break;
   }
   foreach (var browserProcess in browserProcesses)
   {
      try
      {
         browserProcess.Kill();
         browserProcess.WaitForExit();
      }
      catch
      {}
   }
}
于 2013-06-07T20:57:32.730 に答える