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

Фотография

Работа с двумя процессами.


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

#1 icetemper

icetemper

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

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

Отправлено 20 октября 2009 - 09:28

Работа в программе происходит в отдельном окне:
Sys["Process"]("TimeZYX.MasterFrame")["WinFormsObject"]("MainForm")["WinFormsObject"]("MdiClient", "")["WinFormsObject"]("ProcessingDialog")

Заполняются поля, типа:
Sys["Process"]("приложение")["WinFormsObject"]("MainForm")["WinFormsObject"]("MdiClient", "")["WinFormsObject"]("ProcessingDialog")["WinFormsObject"]("tableLayoutPanel1")["WinFormsObject"]("tabControl")["WinFormsObject"]("optionsPage")["WinFormsObject"]("MKTModelCreateControl")["WinFormsObject"]("tableLayoutPanel1")["WinFormsObject"]("tableLayoutPanel2")["WinFormsObject"]("pcEditKeyWord")["WinFormsObject"]("TextEditControl")["WinFormsObject"]("splitContainerControl1")["WinFormsObject"]("SplitGroupPanel", "Panel1")["WinFormsObject"]("textEdit1")["WinFormsObject"]("TextBoxMaskBox", "")

По заполнении необходимых полей, открываем аналогичное второе окно (при просмотре в Object Browser у него другой Index и Id).
Sys["Process"]("TimeZYX.MasterFrame")["WinFormsObject"]("MainForm")["WinFormsObject"]("MdiClient", "")["WinFormsObject"]("ProcessingDialog")

НО кликать в нем на те же поля, что и в предыдущем окне не получается, т.к. ТС ругается на перекрывающиеся окна.
Оverlapping window

Т.е. при записи KeywordTest в новом окне - всё нормально, а при воспроизведении - ошибка.
Как быть? :(
  • 0

#2 Vitalik_V

Vitalik_V

    Активный участник

  • Members
  • PipPip
  • 149 сообщений
  • ФИО:Виталий
  • Город:Харьков

Отправлено 20 октября 2009 - 15:25

Работа в программе происходит в отдельном окне:
Sys["Process"]("TimeZYX.MasterFrame")["WinFormsObject"]("MainForm")["WinFormsObject"]("MdiClient", "")["WinFormsObject"]("ProcessingDialog")

Заполняются поля, типа:
Sys["Process"]("приложение")["WinFormsObject"]("MainForm")["WinFormsObject"]("MdiClient", "")["WinFormsObject"]("ProcessingDialog")["WinFormsObject"]("tableLayoutPanel1")["WinFormsObject"]("tabControl")["WinFormsObject"]("optionsPage")["WinFormsObject"]("MKTModelCreateControl")["WinFormsObject"]("tableLayoutPanel1")["WinFormsObject"]("tableLayoutPanel2")["WinFormsObject"]("pcEditKeyWord")["WinFormsObject"]("TextEditControl")["WinFormsObject"]("splitContainerControl1")["WinFormsObject"]("SplitGroupPanel", "Panel1")["WinFormsObject"]("textEdit1")["WinFormsObject"]("TextBoxMaskBox", "")

По заполнении необходимых полей, открываем аналогичное второе окно (при просмотре в Object Browser у него другой Index и Id).
Sys["Process"]("TimeZYX.MasterFrame")["WinFormsObject"]("MainForm")["WinFormsObject"]("MdiClient", "")["WinFormsObject"]("ProcessingDialog")

НО кликать в нем на те же поля, что и в предыдущем окне не получается, т.к. ТС ругается на перекрывающиеся окна.
Оverlapping window

Т.е. при записи KeywordTest в новом окне - всё нормально, а при воспроизведении - ошибка.
Как быть? :(

Поробуйте найти это окно, а потом уже кликать. Если вы говорите, что у него другой ИД, поробуйте по нему и найти. Можно попробовать Sys.FindId
  • 0

#3 Dmitry N

Dmitry N

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

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

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

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

Если ТС ругается на overlapping окна, то он должен говорить что это за окна. Попробуйте определить что это за окна (картинку в лог сбросьте, например). Возможно, это поможет найти причину проблемы.
  • 0
С уважением,
Дмитрий

#4 Darkus

Darkus

    Опытный участник

  • Members
  • PipPipPipPip
  • 424 сообщений
  • Город:Казахстан, г.Астана

Отправлено 21 октября 2009 - 06:13

Кстати, в ТС можно подписаться на событие overlapping window. В обработчике, как вариант, можете выполнить необходимые действия.
  • 0

#5 icetemper

icetemper

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

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

Отправлено 21 октября 2009 - 11:54

Поробуйте найти это окно, а потом уже кликать. Если вы говорите, что у него другой ИД, поробуйте по нему и найти. Можно попробовать Sys.FindId

Id не пойдет - он каждый раз генерируется заново. (вобщем-то как и Index)


...
Если ТС ругается на overlapping окна, то он должен говорить что это за окна. Попробуйте определить что это за окна (картинку в лог сбросьте, например). Возможно, это поможет найти причину проблемы.

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

Кстати, в ТС можно подписаться на событие overlapping window. В обработчике, как вариант, можете выполнить необходимые действия.

Только вот какие действия?..
  • 0

#6 pozval

pozval

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

  • Members
  • Pip
  • 10 сообщений
  • ФИО:Позняк Валерий Антонович

Отправлено 21 октября 2009 - 15:23

у меня похожая но зеркальная проблема - один объект отображается дважды, один из которых глюк Testcomplete
вопрос - как выбрать правильный
  • 0

#7 Dmitry N

Dmitry N

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

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

Отправлено 22 октября 2009 - 05:35

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

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

Всё ясно, новое и старое окна имеют одно и то же имя. Скрипт пытается работать со старым и новое ему мешает. Надо использовать версию метода WinFormsObject, которая позволяет обращаться к объектам по индексу, вместо используемой по умолчанию, которая обращается к объектам исключительно по их нативному имени. Скорее всего, у нового окна индекс будет 1, так как оно лежит сверху.

Sys["Process"]("TimeZYX.MasterFrame")["WinFormsObject"]("MainForm")["WinFormsObject"]("MdiClient", "")["WinFormsObject"]("<WindowClass>", "<WindowCaption>", 1)
  • 0
С уважением,
Дмитрий

#8 icetemper

icetemper

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

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

Отправлено 22 октября 2009 - 07:30

Пока что использовал жесткое прописывание Id окон при указании объекта.
  • 0

#9 icetemper

icetemper

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

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

Отправлено 22 октября 2009 - 07:43

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

...Скорее всего, у нового окна индекс будет 1, так как оно лежит сверху.

Sys["Process"]("TimeZYX.MasterFrame")["WinFormsObject"]("MainForm")["WinFormsObject"]("MdiClient", "")["WinFormsObject"]("<WindowClass>", "<WindowCaption>", 1)


Да, так и есть, индекс у нового окна становится 1, но вот ТС всё равно не хочет различать объекты по жестко прописанному индексу - ругается - нет такого объекта.
  • 0

#10 Dmitry N

Dmitry N

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

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

Отправлено 28 октября 2009 - 14:19

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

Попробуйте Refresh позвать перед работой со вторым окном:
Sys["Process"]("TimeZYX.MasterFrame")["WinFormsObject"]("MainForm")["Refresh"]();
var wnd = Sys["Process"]("TimeZYX.MasterFrame")["WinFormsObject"]("MainForm")["WinFormsObject"]("MdiClient", "")["WinFormsObject"]("<WindowClass>", "<WindowCaption>", 1);

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

#11 icetemper

icetemper

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

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

Отправлено 29 октября 2009 - 05:00

...
Попробуйте Refresh позвать перед работой со вторым окном:
...

Да, спасибо, пробовал рефрешиться, но почему-то не помогло. Возможно, что-то не так и не там указал. Пока что привязался по Id к процессам.
  • 0


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

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