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

Фотография

Как сделать универсальный скрипт?


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

#1 Boksy

Boksy

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

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

Отправлено 26 июля 2004 - 10:47

Здравствуйте! Подскажите: есть программа которую надо протестировать, в этой программе имена диологов меняются от версии к версии, как можно сделать универсальный скрипт, чтобы он выполнял одинаковые действия в любой версии(например нажималась одна и таже кнопка)? Попытался использовать ID (они остаються одни и теже во всех версиях, мне это сообщили программисты), но Object Properties выдает совсем другой ID(к тому же постоянно меняющейся, при любом новом запуске программы), или я что-то не так понимаю в его работе?
  • 0

#2 Nomad

Nomad

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

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

Отправлено 26 июля 2004 - 12:21

попробуй через гарячие клавиши если они есть конечно :)
  • 0

#3 Boksy

Boksy

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

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

Отправлено 26 июля 2004 - 12:31

да через горячие клавиши не желательно, их в процессе создания новой версии тоже могут изменить, я бы еще хотел бы понять, какой ID Oblect Properties выдает, и почему он не соответствует, тем которые мне дали программисты?
  • 0

#4 Boksy

Boksy

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

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

Отправлено 26 июля 2004 - 12:32

Не но все-равно главный вопрос, как сделать универсальный скрипт
  • 0

#5 Гость_Guest_Nomad_*

Гость_Guest_Nomad_*
  • Guests

Отправлено 26 июля 2004 - 12:46

если у вас все (гарячие клавиши, ид) так быстро меняется то думаю универсального скрипта не выйдет.....

#6 Boksy

Boksy

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

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

Отправлено 26 июля 2004 - 12:53

Да не вы меня не поняли, ид не меняется, программисты говорят что они используют всегда одни и теже ид, но Object Properties, выдает ид совсем другой (и на удивление почему-то всегда равный хендалу)
  • 0

#7 Юстус

Юстус

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

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

Отправлено 26 июля 2004 - 13:22

(и на удивление почему-то всегда равный хендалу)

А может быть это и есть Handle ? Значение какого объекта (тип окно ?) и какого его свойства вы смотрите ?
  • 0

#8 Boksy

Boksy

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

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

Отправлено 26 июля 2004 - 13:32

Смотрю свойство ID , а объекты любые что окно, что эдиты все обекты что я смотрел везде совпадали ид с хандалом

вот дотустим пример, оба свойства имеют одинаковое значение

Sys.Process("KOMPAS").Window("Afx:400000:8:10011:0:20caf", "КОМПАС-3D V7 - [Фрагмент БЕЗ ИМЕНИ1]", 1).Window("Edit", "", 3).ID

Sys.Process("KOMPAS").Window("Afx:400000:8:10011:0:20caf", "КОМПАС-3D V7 - [Фрагмент БЕЗ ИМЕНИ1]", 1).Window("Edit", "", 3).Handle
  • 0

#9 Гость_Guest_Nomad_*

Гость_Guest_Nomad_*
  • Guests

Отправлено 26 июля 2004 - 13:39

если прально понял.... вот например из стандартных примеров всеми любимы ордерс :)
нажатие кнопки Cancel в форме New Order
Call w.Window("ThunderRT6CommandButton","*",1).Click()
или это тоже не то и я не так понял? :blink:

#10 Boksy

Boksy

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

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

Отправлено 26 июля 2004 - 13:42

Да не, мне нужно использовать ид для доступа к определенным объектам (а они различаются между тем что мне дали программисты и теми которые выдает ObjectProperteis)
  • 0

#11 Гость_Guest_Nomad_*

Гость_Guest_Nomad_*
  • Guests

Отправлено 26 июля 2004 - 13:48

а они во время эволюции продукта различаются или нет? если нет пользуйте те что вам показует ObjectProperteis или так важно узнать почему расходятся те что дали программеры и те что показует ObjectProperteis?

#12 Boksy

Boksy

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

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

Отправлено 26 июля 2004 - 13:52

Дело в том что ObjectProperteis показывает разные значения ид, даже если просто заного запустить тестируемую программу
  • 0

#13 Гость_Guest_Nomad_*

Гость_Guest_Nomad_*
  • Guests

Отправлено 26 июля 2004 - 14:00

насколько я понимаю каждую кнопку мона прописать как окно, там индексы неменяются .....
кусок кода я вставлял выше :) вот полностью

Sub Test1
Set p = Sys.Process("Orders")
Set w = p.MainForm
w.Activate
Call w.Window("msvb_lib_toolbar").Click(104)
Set w = p.OrderFrm
w.Activate
Call w.Window("ThunderRT6CommandButton","*",1).Click()
End Sub

вот если ты запустишь ордеры, и нажмешь New Order посмотри ObjectProperties, ID меняется каждый раз и равен Handle, а вот WndIndex всегда постоянный вот от него и отталкивайся. Вот вроде бы все если что пиши бум думать дальше :)

#14 Boksy

Boksy

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

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

Отправлено 26 июля 2004 - 14:11

понимаете, думал я и WndIndex, но и тут проблема, попробую объяснить на примере: запустил программу у эдита1 индекс первоночально =5, потом нажимаю на кнопку, появляются еще эдиты, так вот у эдит1 индекс становится =10. Так что индекс меняется во время работы программы, а на сколько он изменится это вообще нереально выяснить.
  • 0

#15 Гость_Guest_Nomad_*

Гость_Guest_Nomad_*
  • Guests

Отправлено 26 июля 2004 - 14:19

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

#16 Boksy

Boksy

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

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

Отправлено 26 июля 2004 - 14:33

Когда я запустил программу, уменя есть Edit(1) с WndIndex=5, после нажатия на некоторую кнопку, появляется панель инструментов (для ввода точек)(это всплывающая панель, так что и она пренадлежит моему перваночальному окну), так вот на этой панели тоже есть едиты, и тогда у Edit(1) становится свойство WndIndex=10. Cвойство WndIndex оно тоже меняется по ходу работы программы, а на сколько я определить никак не смогу.
  • 0

#17 Гость_Guest_Nomad_*

Гость_Guest_Nomad_*
  • Guests

Отправлено 26 июля 2004 - 14:42

т.е. ета всплывающая панель никак у тебя не блокирует едит(1)?
а что происходит если ты два раза жмешь на едит(1)?
и там хоть как нибудь видно второй едит? :)

#18 Boksy

Boksy

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

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

Отправлено 26 июля 2004 - 14:49

Edit(1), он не блокируется, при этом в него можно вводить значения, да и в те которые появились эдиты в них тоже можно вводить значение, это все на усмотрение пользователя. При DblClick просто в эдите выделяется все число.

P.S. Конечно плохо с моей стороны, но я покидаю форум, меня тут уже с работы выганяют.
  • 0

#19 Гость_Guest_Nomad_*

Гость_Guest_Nomad_*
  • Guests

Отправлено 26 июля 2004 - 14:56

мы тут про кнопки или про едит боксы разговариваем? %)
я что то опять запутался :)
но как по мне гарячие клавиши в использовании нажатия кнопок самая верная вещь, к тому же если что поправить легче ;)

#20 Юстус

Юстус

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

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

Отправлено 27 июля 2004 - 15:38

Смотрю свойство ID , а объекты любые что окно, что эдиты все обекты что я смотрел везде совпадали ид с хандалом

вот дотустим пример, оба свойства имеют одинаковое значение

Sys.Process("KOMPAS").Window("Afx:400000:8:10011:0:20caf", "КОМПАС-3D V7 - [Фрагмент БЕЗ ИМЕНИ1]", 1).Window("Edit", "", 3).ID

Sys.Process("KOMPAS").Window("Afx:400000:8:10011:0:20caf", "КОМПАС-3D V7 - [Фрагмент БЕЗ ИМЕНИ1]", 1).Window("Edit", "", 3).Handle

Если вы посмотрите в ObjectBrowser панели внизу Description для свойтсва ID - то там можно прочитать:

int ID
Object ID - For processes - the process ID, for Windows- the Window handle etc

Причина совпадения, я думаю, понятна.
Оконные объкты в TestComplete идентифицируются следующими параметрами:

WndClass [in] Required String
WndCaption [in] Optional String Default value: "*"
WndIndex [in] Optional Integer Default value: -1

Sys.Process("TestComplete").Window("TFormIndicator", "FormIndicator", 1)
Подробнее смотри Help по функции Window


В случае VC++ приложений - имена классов типа "Afx:400000:8:10011:0:20caf" надо заменять на
"Afx:400000:8:*" так как последние числа изменяются от запуска к запуску - подробнее см. Changes in Window Attributes TestComplete help topic.
  • 0


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

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