тестовая студия - новый браузер при сбое

Я использую пробную версию Teleriks Test Studio и столкнулся с проблемой в своем приложении Silverlight. Мой тест входит в систему, а затем пытается добавить 100 новых пользователей из источника данных. Я запускал тест несколько раз, и каждый раз, когда он терпит неудачу, он, кажется, делает одно и то же: он застревает с ошибкой Unable to locate element, но я понимаю, что в случае неудачи он должен перезапустить тест. Тем не менее, это не так. Вместо этого он просто сидит там, не в силах найти какой-либо другой элемент.

Я должен сказать, что это непоследовательная ошибка; это всегда находится на другом этапе теста. Иногда он отлично выполняет 10 тестов, а следующий терпит неудачу.

Есть ли способ вызвать close current browser and open new browser при сбое или даже добавить шаг для закрытия и открытия браузера в качестве первого шага? Как я могу закрыть и снова открыть браузер, если браузер не отвечает?


person Nixdorf    schedule 07.06.2013    source источник


Ответы (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
      {}
   }
}
person Brian    schedule 07.06.2013