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

Фотография

Exists бесконечно ищет процесс

exists процессы проверка

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

#1 Prospero

Prospero

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

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

Отправлено 05 июля 2016 - 14:54

Здравствуйте!

 

Довожу до ума и по максимуму автоматизирую свои тесты. Хотела написать проверку на проверку процесса и запуска приложения, если такого процесса нет. TestComplete 7.5, приложение на Delfi, скрипты пишу на JScript.

Столкнулась с такой проблемой. Если приложение уже запущено, то код отрабатывает правильно и функция выполняется. Если приложение не запущено (т.е. ради чего эта функция и писалась), тогда Exists начинает бесконечно искать этот процесс и подвешивать систему, вместо того, чтобы послать false и привести к выполнению кода в условии. После принудительной остановки в лог вываливается много ошибок, что процесс не найден.

Собственно, сам код:

function StartPP()
{
 if (! Sys.WaitProcess("PPostIn").Exists)
  {
    TestedApps.PPostIn.Run(1, true);
    var PP;
    PP = Sys.Process("PPostIn");
    PP.VCLObject("login").VCLObject("Button1").ClickButton();
    BuiltIn.Delay(3000);
  }
  
}

Натыкалась на советы, связанные с уменьшением таймаута в Playback. Но это не повлияло никак.

Прикрепленные файлы


  • 0

#2 Genka

Genka

    Профессионал

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


Отправлено 05 июля 2016 - 20:25

WaitProcess не постит никаких ошибок в лог, скорее всего проблема в строке

PP = Sys.Process("PPostIn");

Чтобы это проверить, перепишите код вот так

var p = Sys.WaitProcess("PPostIn");

if(!pExists)

 

Затем поставьте брекпоинт на строке с if-ом и посмотрите на результат. Если ТС остановится на брекпоинте, значит проблему надо искать дальше.

Хотя, конечно, и в этом случае непонятно, почему оно зависает.

 

Параметр Auto-wait timeout относится к методам Process, Window и т.п., но не к Wait-методам


  • 0

TestComplete для начинающих (видеозаписи курса)

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

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


#3 Сергей

Сергей

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 245 сообщений
  • Город:Москва

Отправлено 06 июля 2016 - 07:51

В wait методе я бы задержку поставил, сколько ждать секунд


  • 0

"Если ты хороший плотник и делаешь красивую тумбочку, ты не будешь прибивать сзади фанеру, даже несмотря на то, что задняя часть повернута к стене, и никто ее не видит. Ты будешь хорошо спать ночью, только если тебе удалось воплотить в своем произведении эстетическую красоту и качество." © Стив Джобс


#4 Сергей

Сергей

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 245 сообщений
  • Город:Москва

Отправлено 06 июля 2016 - 07:52

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


  • 0

"Если ты хороший плотник и делаешь красивую тумбочку, ты не будешь прибивать сзади фанеру, даже несмотря на то, что задняя часть повернута к стене, и никто ее не видит. Ты будешь хорошо спать ночью, только если тебе удалось воплотить в своем произведении эстетическую красоту и качество." © Стив Джобс


#5 Genka

Genka

    Профессионал

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


Отправлено 06 июля 2016 - 08:07

В wait методе я бы задержку поставил, сколько ждать секунд

По умолчанию этот параметр равен 0, что означает единственную проверку.

 

И кто сказал, что ТС пиратский? :)


  • 0

TestComplete для начинающих (видеозаписи курса)

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

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


#6 Prospero

Prospero

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

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

Отправлено 06 июля 2016 - 09:33

Изменила:

 

var p = Sys.WaitProcess("PPostIn", 0);
  if (!p.Exists)
  {
    TestedApps.PPostIn.Run(1, true);
    var PP;
    PP = Sys.Process("PPostIn");
    PP.VCLObject("login").VCLObject("Button1").ClickButton();
    BuiltIn.Delay(3000);
  }
 

Поигралась с настройками таймаута в ожидании - и 0 попробовала, и 1000, и 10000. Результат один. Некоторое время ищет этот процесс (раз 10), потом всё-таки переходит к брекпоинту, который стоит на if. В логе несколько записей "process not found". Т.е. по сути этот код сработает, но почему он делает вместо одной попытки несколько - я не понимаю.

 

 зря вы с пиратским TestComplete 7.5 связались

 

 

На работе достаточно строго с этим, даже тимвьювер, который условно-бесплатный, не разрешают ставить и использовать для работы из дома.


  • 0

#7 Сергей

Сергей

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 245 сообщений
  • Город:Москва

Отправлено 06 июля 2016 - 09:45

Проверьте функцию на блокноте. Проверьте функцию на последнем ТС (30 дней бесплатно).

По поводу 7.5 - по моим наблюдениям последняя взломанная версия TC, позднее не видел.

Плюс большинство проблем на форуме как раз по 7.5, который в итоге пиратский оказывался.


  • 0

"Если ты хороший плотник и делаешь красивую тумбочку, ты не будешь прибивать сзади фанеру, даже несмотря на то, что задняя часть повернута к стене, и никто ее не видит. Ты будешь хорошо спать ночью, только если тебе удалось воплотить в своем произведении эстетическую красоту и качество." © Стив Джобс



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

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