Перейти к содержимому

jaja_bin

Регистрация: 31 мар 2017
Offline Активность: 12 мая 2017 11:48
-----

Мои темы

Ожидание окна\Нахождение процесса

05 апреля 2017 - 06:21

TestComplete 10.6 \ VBScript \ тестируемое приложение на с++

Добрый день !

Наверное, сразу стоит предупредить, что это мой первый опыт работы с автоматизацией. 

Пытаюсь заавтоматизировать установку приложения на вирт машинах VMware (через TestExecute), но спотыкаюсь на каждых граблях. 
Подскажите, пожалуйста, решение сразу с несколькими проблемами:

1. при первом запуске скрипта всегда вылазит ошибка "The process "msiexec" was not found. The test run has stopped because the "Stop on Error" setting is enabled. ". При второй попытке успешно запускается. Можно ли каким-нибудь образом исключить такое поведение ?
2. после выбора настроек установки появляется окно с кнопкой Install, изначально проблема была, что кнопку не было видно (Cannot obtain the window with the window class 'Button', window caption '&Install' and index -1. See Additional Information for details. 8:36:45 Normal ), хотя окно появляется сразу и через Record Script и Display object Spy видно. Мне кажется, что частично было решено через Sys.Refresh(), но до сих пор скрипт периодически фейлится c этой ошибкой.

3. после продолжительной установки появляется финальное окно с кнопкой Finish. и тут скрипт постоянно или зависает, или фейлится, или еще что-нибудь. Подскажите грамотное решение, как дождаться завершения установки и появления окна. 
 

Sub InstallFDE

  Set WshShell = CreateObject("WScript.Shell")
  WshShell.Run "msiexec.exe /i \\pga\share\fde\fse_x64.msi"
  Set msiexec = Sys.Process("msiexec", 2)
  Set InstallationWindow = msiexec.WaitWindow("MsiDialogCloseClass", "Full Disk Encryption  Setup", -1, 1200000)
  if InstallationWindow.Exists then 
      msiexec.Window("MsiDialogCloseClass", "Full Disk Encryption  Setup").Window("Button", "OK").ClickButton
      msiexec.Window("MsiDialogCloseClass", "Full Disk Encryption  Setup").Window("Button", "&Next").ClickButton
      Set wndMsiDialogCloseClass = msiexec.Window("MsiDialogCloseClass", "Full Disk Encryption  Setup")
      wndMsiDialogCloseClass.Window("Button", "", 1).Window("Button", "I &accept the terms in the License Agreement").ClickButton
      wndMsiDialogCloseClass.Window("Button", "&Next").ClickButton
      msiexec.Window("MsiDialogCloseClass", "Disk Encryption  Setup").Window("Button", "&Next").ClickButton
      msiexec.Window("MsiDialogCloseClass", "Disk Encryption  Setup").Window("Button", "&Next").ClickButton
      Set wndMsiDialogCloseClass = msiexec.Window("MsiDialogCloseClass", "Full Disk Encryption  Setup")
      wndMsiDialogCloseClass.Window("Button", "", 4).Window("Button", "Do not initialize").ClickButton
      wndMsiDialogCloseClass.Window("Button", "", 5).Window("Button", "Do not initialize").ClickButton
      wndMsiDialogCloseClass.Window("Button", "&Next").ClickButton 
      Sys.Refresh()
      msiexec.Window("MsiDialogCloseClass", "Full Disk Encryption  Setup").Window("Button", "&Install").ClickButton

      Sys.Refresh()
      Set FinishWindow = msiexec.Window("MsiDialogCloseClass", "Full Disk Encryption  Setup").WaitWindow("Button", "&Finish", -1, 1800000)
      if FinishWindow.Exists then      
        msiexec.Window("MsiDialogCloseClass", "Full Disk Encryption  Setup").Window("Button", "&Finish").ClickButton
      else
        Log.Warning "Finish window isn't found -> check the installation"
      end if

  else
    Log.Warning "Window is still not opened"
  end if
End Sub