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

Логи как инструмент тестировщика
онлайн, начало 21 мая
Автоматизация функционального тестирования
онлайн, начало 25 мая
Управление требованиями
онлайн, начало 25 мая
Школа тест-менеджеров v. 2.0
онлайн, начало 23 мая
Фотография

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


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 6

#1 jaja_bin

jaja_bin

    Новый участник

  • Members
  • Pip
  • 4 сообщений

Отправлено 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

  • 0

#2 Genka

Genka

    Гуру

  • Members
  • PipPipPipPipPipPip
  • 1 315 сообщений
  • ФИО:Геннадий Алпаев
  • Город:Украина, Днепр


Отправлено 05 Апрель 2017 - 06:28

Думаю, вам стоит прочитать вот эту главу, там более-менее всё объяснено

http://tctutorial.ru/synch/


  • 0

Software Testing Automation Tips (50 вещей, которые должен знать каждый автоматизатор, книга на английском языке)

Онлайн-учебник "Автоматизация тестирования от «А» до «Ы»"
Сборник рецептов по TestComplete (книга на английском языке)
Онлайн-учебник по TestComplete
Онлайн-учебник по SilkTest


#3 jaja_bin

jaja_bin

    Новый участник

  • Members
  • Pip
  • 4 сообщений

Отправлено 05 Апрель 2017 - 07:35

Спасибо, было прочитано, но вопросы остались.

1. Для объекта 
msiexec.Window("MsiDialogCloseClass", "Full Disk Encryption Setup").Window("Button", "&Install").ClickButton
используется какой Wait ?

с этими вариантами не работает:

 

msiexec.Window("MsiDialogCloseClass", "Full Disk Encryption  Setup").WaitWindow("Button", "&Install", -1, 30000)
msiexec.Window("MsiDialogCloseClass", "Full Disk Encryption  Setup").WaitChild(Window("Button", "&Install"), 30000)


2. Для msiexec = Sys.Process("msiexec", 2также добавлен Wait, но после восстановления снэпшота первый запуск скрипта продолжает фейлится.

  • 0

#4 baxatob

baxatob

    Постоянный участник

  • Members
  • PipPipPip
  • 234 сообщений
  • ФИО:Юрий
  • Город:Riga

Отправлено 05 Апрель 2017 - 09:16

 

 

1. при первом запуске скрипта всегда вылазит ошибка "The process "msiexec" was not found...

 

Попробуйте использовать: 

Sys.WaitProcess("msiexec", timeout, process_index)

Ну и вообще я бы посоветовал использовать Python вместо VBScript. Гораздо быстрее и выразительнее можно писать код, хотя в исполнении он будет чуть медленнее.


  • 0

#5 jaja_bin

jaja_bin

    Новый участник

  • Members
  • Pip
  • 4 сообщений

Отправлено 05 Апрель 2017 - 09:38

baxatob,

Sys.WaitProcess("msiexec", timeout, process_index) 

был использован в сообщении #3 по совету Genka, и все равно стабильно ошибка вылазит. 

И спасибо вам за совет с использованием Python. В дальнейшем обязательно заменю 
VBScript.


  • 0

#6 baxatob

baxatob

    Постоянный участник

  • Members
  • PipPipPip
  • 234 сообщений
  • ФИО:Юрий
  • Город:Riga

Отправлено 05 Апрель 2017 - 09:53

Проверьте, сколько у вас одновременно процессов msiexec запускается.

 

Sys.Process("msiexec", 2)  <-- тут индекс 2, почему? Запускается параллельный процесс?


  • 1

#7 jaja_bin

jaja_bin

    Новый участник

  • Members
  • Pip
  • 4 сообщений

Отправлено 05 Апрель 2017 - 10:38

да, в системе не один процесс. попробовала с единственным процессом и индексом 1, заработало с первого раза. Спасибо !


  • 0


Организация автоматизированного тестирования
онлайн, начало 1 июня
Автоматизация функционального тестирования
онлайн, начало 25 мая
Selenium WebDriver: полное руководство
онлайн, начало 15 июня
Школа Тест-Аналитика
онлайн, начало 6 июня



Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных

Яндекс.Метрика
Реклама на портале