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

Фотография

Проверка на наличие процесса


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

#1 Rumata

Rumata

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

  • Members
  • Pip
  • 66 сообщений
  • Город:Астана

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

мне нужно подставлять в цикле вместо этого имени значение строковой переменной и проверять наличие этого процесса
если его нет то я провожу действие в тестируемом приложении(перехожу на другую запись в списке) в результате которого меняется имя лог-файла в процесе(который реально существует) и опять проверяю наличие моего процесса ; если есть то делаю определённое действие

вопрос : как сделать проверить существование процесса в имени которого можно динамически менять параметр
  • 0

#2 Dmitry N

Dmitry N

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

  • Members
  • PipPipPipPipPipPip
  • 1 742 сообщений
  • ФИО:Николаев Дмитрий
  • Город:Где-то в России

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

  • 0
С уважением,
Дмитрий

#3 Rumata

Rumata

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

  • Members
  • Pip
  • 66 сообщений
  • Город:Астана

Отправлено 03 октября 2007 - 09:24

чегото у меня не работает и зачем нужна 1000 в ('DefaultListCellRenderer$UIResource', logName, 0, 1000); ???
не может найти объект


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



Как я понимаю, вам надо проверить существование объекта в приложении, а не процесса. Сделать это можно с помощью метода 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');


  • 0

#4 Dmitry N

Dmitry N

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

  • Members
  • PipPipPipPipPipPip
  • 1 742 сообщений
  • ФИО:Николаев Дмитрий
  • Город:Где-то в России

Отправлено 04 октября 2007 - 15:26

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



Прежде всего хочу заметить, что в TestComplete замечательная справочная система. Задокументировано практически все, и при этом очень доступно и с примерами. Это к вопросу о 1000 в вызове метода WaitSwingObject.



А по поводу невозможности найти объект, в скрипте упоминается 12 объектов -- возможно не находится какой-нибудь другой объект. Запостите сюда сообщение об ошибке вместе с содержимым панели Remarks.
  • 0
С уважением,
Дмитрий

#5 Rumata

Rumata

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

  • Members
  • Pip
  • 66 сообщений
  • Город:Астана

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

и процесс нормально обнаруживается
  • 0

#6 Rumata

Rumata

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

  • Members
  • Pip
  • 66 сообщений
  • Город:Астана

Отправлено 05 октября 2007 - 04:51

Я сам разобрался, нужно было использовать WaitWindow вместо WaitSwingObject
  • 0


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

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