Проверка на наличие процесса
#1
Отправлено 03 октября 2007 - 05:30
помогите плиз вопрос возник
TestComplete 5.12.474.7
delphiscript
приложение на Java
У меня есть процесс:
Sys.Process('javaw').SwingObject('JDialog', 'Окно архивирования лог файла', -1).SwingObject('JRootPane', '', 0).SwingObject('null.layeredPane').SwingObject('null.contentPane').SwingObject('LogArchivePanel', '', 0).SwingObject('JPanel', '', 0).SwingObject('JScrollPane', '', 0).SwingObject('JViewport', '', 0).SwingObject('JList', '', 0).AWTObject('CellRendererPane', '', 0).SwingObject('DefaultListCellRenderer$UIResource', '20070918.log.gz', 0)
в конце имя лог файла 20070918.log.gz и оно меняется
мне нужно подставлять в цикле вместо этого имени значение строковой переменной и проверять наличие этого процесса
если его нет то я провожу действие в тестируемом приложении(перехожу на другую запись в списке) в результате которого меняется имя лог-файла в процесе(который реально существует) и опять проверяю наличие моего процесса ; если есть то делаю определённое действие
вопрос : как сделать проверить существование процесса в имени которого можно динамически менять параметр
#2
Отправлено 03 октября 2007 - 07:51
Как я понимаю, вам надо проверить существование объекта в приложении, а не процесса. Сделать это можно с помощью метода WaitSwingObject.
logName := '20070918.log.gz'; w1 := Sys.Process('javaw').SwingObject('JDialog', 'Окно архивирования лог файла', -1).SwingObject('JRootPane', '', 0).SwingObject('null.layeredPane').SwingObject('null.contentPane').SwingObject('LogArchivePanel', '', 0).SwingObject('JPanel', '', 0).SwingObject('JScrollPane', '', 0).SwingObject('JViewport', '', 0).SwingObject('JList', '', 0).AWTObject('CellRendererPane', '', 0); w2 := w1.WaitSwingObject('DefaultListCellRenderer$UIResource', logName, 0, 1000); if w2.Exists then Log.Message('Log file is found') else Log.Error('Log file is not found');
Дмитрий
#3
Отправлено 03 октября 2007 - 09:24
не может найти объект
Здравствуйте.
Как я понимаю, вам надо проверить существование объекта в приложении, а не процесса. Сделать это можно с помощью метода WaitSwingObject.logName := '20070918.log.gz'; w1 := Sys.Process('javaw').SwingObject('JDialog', 'Окно архивирования лог файла', -1).SwingObject('JRootPane', '', 0).SwingObject('null.layeredPane').SwingObject('null.contentPane').SwingObject('LogArchivePanel', '', 0).SwingObject('JPanel', '', 0).SwingObject('JScrollPane', '', 0).SwingObject('JViewport', '', 0).SwingObject('JList', '', 0).AWTObject('CellRendererPane', '', 0); w2 := w1.WaitSwingObject('DefaultListCellRenderer$UIResource', logName, 0, 1000); if w2.Exists then Log.Message('Log file is found') else Log.Error('Log file is not found');
#4
Отправлено 04 октября 2007 - 15:26
Прежде всего хочу заметить, что в TestComplete замечательная справочная система. Задокументировано практически все, и при этом очень доступно и с примерами. Это к вопросу о 1000 в вызове метода WaitSwingObject.
А по поводу невозможности найти объект, в скрипте упоминается 12 объектов -- возможно не находится какой-нибудь другой объект. Запостите сюда сообщение об ошибке вместе с содержимым панели Remarks.
Дмитрий
#5
Отправлено 05 октября 2007 - 04:30
Здравствуйте.
Прежде всего хочу заметить, что в TestComplete замечательная справочная система. Задокументировано практически все, и при этом очень доступно и с примерами. Это к вопросу о 1000 в вызове метода WaitSwingObject.
А по поводу невозможности найти объект, в скрипте упоминается 12 объектов -- возможно не находится какой-нибудь другой объект. Запостите сюда сообщение об ошибке вместе с содержимым панели Remarks.
Сейчас невозможно показать поиск потому же объекту что я приводил в начале, поэтому я покажу аналогичный пример.
Здесь он просто переходит по ветке ELSE и выводит в лог "нет"
fff : string;
xx, xxx : olevariant;
Sys.Process('TOTALCMD').Window('TTOTAL_CMD', 'Total Commander 6.03a - ISS GmbH Heidelberg', 1).refresh;
sleep(500);
xx := Sys.Process('TOTALCMD').Window('TTOTAL_CMD', 'Total Commander 6.03a - ISS GmbH Heidelberg', 1).Window('TMyPanel', '', 2);
fff := '[_нет_] 15 122 276 КБ из 61 440 560 КБ свободно';
xxx := xx.WaitSwingObject('TMyPanel', fff, 1, 1000);
if xxx.exists then
log.message('есть')
else
log.message('нет');
Параллельно проверял кодом
if Sys.Process('TOTALCMD').Window('TTOTAL_CMD', 'Total Commander 6.03a - ISS GmbH Heidelberg', 1).Window('TMyPanel', '', 2).Window('TMyPanel', '[_нет_] 15 122 276 КБ из 61 440 560 КБ свободно', 1).exists then
log.message('есть 1')
else
log.message('нет 1');
и процесс нормально обнаруживается
#6
Отправлено 05 октября 2007 - 04:51
Количество пользователей, читающих эту тему: 0
0 пользователей, 0 гостей, 0 анонимных