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

Фотография

SilkTest не описывает объекты


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

#1 INside

INside

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

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

Отправлено 20 ноября 2007 - 07:25

В процессе работы SilkTest (7.1.0.) не видит заголовки пунктов (подпунктов) меню в окне Window Declaration, описывает их как MenuN.MenuItemN. Разработчики утверждают, что они прописаны. Для нормальной работы скрипта нужны именно заголовки. Подскажите, пожалуйста, как решить эту проблему.
  • 0

#2 KaNoN

KaNoN

    АЦЦКИЙ СОТОНА

  • Members
  • PipPipPipPipPipPip
  • 1 260 сообщений
  • ФИО:Колесник Николай
  • Город:Днепропетровск > Киев > Лондон

Отправлено 20 ноября 2007 - 07:44

В процессе работы SilkTest (7.1.0.) не видит заголовки пунктов (подпунктов) меню в окне Window Declaration, описывает их как MenuN.MenuItemN. Разработчики утверждают, что они прописаны. Для нормальной работы скрипта нужны именно заголовки. Подскажите, пожалуйста, как решить эту проблему.

Что за приложение? Какая технология используется (Java, .NET, WEB)? На чем написано приложение? Какие библиотеки используются?
Иначе это будет гадание на кофейной гуще.
  • 0

#3 INside

INside

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

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

Отправлено 20 ноября 2007 - 11:52

Приложение Delphi, библиотеки стандартные. Для меню использовался стандартный компонент Tmainmenu.
  • 0

#4 Genka

Genka

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

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


Отправлено 20 ноября 2007 - 12:12

Приложение Delphi, библиотеки стандартные. Для меню использовался стандартный компонент Tmainmenu.

это нормально. У СилкТеста нет поддержки Делфи-приложений. И если некоторые контролы можно примаппить и работать с ними, как со стандартными, то с меню это не прокатывает.

Если вы хотите работать с Делфи приложением и нормально работать со всеми контролами - СилкТест вам не подойдет
  • 0

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

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

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


#5 INside

INside

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

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

Отправлено 20 ноября 2007 - 12:52

Спасибо, Genka.
Наверное, придется осваивать что-то еще кроме Силка. Но и его бросать не хочется (столько времени потрачено на изучение программы, написание скриптов). Может быть все же есть какой-то обходной маневр? Ведь есть же люди, которые тестируют Дельфи – приложения именно на Силке.
  • 0

#6 Genka

Genka

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

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


Отправлено 20 ноября 2007 - 13:13

Спасибо, Genka.
Наверное, придется осваивать что-то еще кроме Силка. Но и его бросать не хочется (столько времени потрачено на изучение программы, написание скриптов). Может быть все же есть какой-то обходной маневр? Ведь есть же люди, которые тестируют Дельфи – приложения именно на Силке.


ну обходной маневр есть конечно: напишите главному окну метод MenuPick например, в который передавайте в стандартной форме силковой меню, которое хотите выбрать (типа, "File;Close"), а внутри опишите структуру, в которой сопоставьте имена менюшек с их номерами. И дальше работайте с этим методом. Если в приложении что-то изменится - вам достаточно будет сделать изменения в этой структуре.

Только главное ее хорошенько продумать сразу, и все
  • 0

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

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

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


#7 KaNoN

KaNoN

    АЦЦКИЙ СОТОНА

  • Members
  • PipPipPipPipPipPip
  • 1 260 сообщений
  • ФИО:Колесник Николай
  • Город:Днепропетровск > Киев > Лондон

Отправлено 20 ноября 2007 - 16:08

Спасибо, Genka.
Наверное, придется осваивать что-то еще кроме Силка. Но и его бросать не хочется (столько времени потрачено на изучение программы, написание скриптов). Может быть все же есть какой-то обходной маневр? Ведь есть же люди, которые тестируют Дельфи – приложения именно на Силке.


ну обходной маневр есть конечно: напишите главному окну метод MenuPick например, в который передавайте в стандартной форме силковой меню, которое хотите выбрать (типа, "File;Close"), а внутри опишите структуру, в которой сопоставьте имена менюшек с их номерами. И дальше работайте с этим методом. Если в приложении что-то изменится - вам достаточно будет сделать изменения в этой структуре.

Только главное ее хорошенько продумать сразу, и все

Стоп, но если каждый пункт меню поотдельности видится, то зачем же так извращаться? Просто во фрейме дать понятные имена пунктам, а использовать индексы в тэгах. То же самое будет, а использовать легче (автозаполнение работает)
  • 0

#8 Genka

Genka

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

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


Отправлено 20 ноября 2007 - 16:25

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


я дважды тупанул сегодня на этом форуме

вот к чему приводит долгая работа с ТестКомплитом

меня в общем не слушайте, слушайте КаНоНа (но это не значит, что я перестану говорить здесь :acute: )

ЗЫ надо выпить, или наоборот - бросить пить. Как-то так
  • 0

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

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

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


#9 KaNoN

KaNoN

    АЦЦКИЙ СОТОНА

  • Members
  • PipPipPipPipPipPip
  • 1 260 сообщений
  • ФИО:Колесник Николай
  • Город:Днепропетровск > Киев > Лондон

Отправлено 21 ноября 2007 - 08:32

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


я дважды тупанул сегодня на этом форуме
вот к чему приводит долгая работа с ТестКомплитом

Это карма. :acute:

ЗЫ надо выпить, или наоборот - бросить пить. Как-то так

Неее, надо выпить и бросить. И так несколько раз
  • 0

#10 INside

INside

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

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

Отправлено 21 ноября 2007 - 10:29

Стоп, наверное я не правильно поставила вопрос. :acute:
Дело в том, что заголовки нужны для тэга. Силк видит ID и индексы (иногда только индексы). Приложение запускается и тестируется под разными пользователями. В зависимости от прав пользователей видоизменяется и меню (например, исключаются некоторые пункты). Т.е. меняются их ID-и и индексы. Скрипт соответственно становиться нерабочим. Написание вручную в тэг заголовка результата не дало, объект не определяется. Наверное, тут уже ничем не поможешь.
Тогда вопрос такой: ТестКомплит для этой задачи подойдет?
Спасибо.
  • 0

#11 KaNoN

KaNoN

    АЦЦКИЙ СОТОНА

  • Members
  • PipPipPipPipPipPip
  • 1 260 сообщений
  • ФИО:Колесник Николай
  • Город:Днепропетровск > Киев > Лондон

Отправлено 21 ноября 2007 - 13:42

Стоп, наверное я не правильно поставила вопрос. :acute:
Дело в том, что заголовки нужны для тэга. Силк видит ID и индексы (иногда только индексы). Приложение запускается и тестируется под разными пользователями. В зависимости от прав пользователей видоизменяется и меню (например, исключаются некоторые пункты). Т.е. меняются их ID-и и индексы. Скрипт соответственно становиться нерабочим. Написание вручную в тэг заголовка результата не дало, объект не определяется. Наверное, тут уже ничем не поможешь.
Тогда вопрос такой: ТестКомплит для этой задачи подойдет?
Спасибо.

Если приложение не перекомпилировать особым образом, то будут те же проблемы
В принципе по ID тоже тег достаточно уникальный. А вот по индексам - это конечно проблемы
  • 0

#12 Genka

Genka

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

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


Отправлено 21 ноября 2007 - 13:46

Стоп, наверное я не правильно поставила вопрос. :acute:
Дело в том, что заголовки нужны для тэга. Силк видит ID и индексы (иногда только индексы). Приложение запускается и тестируется под разными пользователями. В зависимости от прав пользователей видоизменяется и меню (например, исключаются некоторые пункты). Т.е. меняются их ID-и и индексы. Скрипт соответственно становиться нерабочим. Написание вручную в тэг заголовка результата не дало, объект не определяется. Наверное, тут уже ничем не поможешь.
Тогда вопрос такой: ТестКомплит для этой задачи подойдет?
Спасибо.


ааа, так я не тупил, а ПРЕДВИДЕЛ! =)

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

в вашем же случае лучше все же попробовать ТестКомплит
только учтите, что для того, чтобы ТестКомплит смог работать с меню, вам придется перекомпилировать приложение специальным образом
  • 0

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

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

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


#13 KaNoN

KaNoN

    АЦЦКИЙ СОТОНА

  • Members
  • PipPipPipPipPipPip
  • 1 260 сообщений
  • ФИО:Колесник Николай
  • Город:Днепропетровск > Киев > Лондон

Отправлено 22 ноября 2007 - 09:13

Стоп, наверное я не правильно поставила вопрос. :wink:
Дело в том, что заголовки нужны для тэга. Силк видит ID и индексы (иногда только индексы). Приложение запускается и тестируется под разными пользователями. В зависимости от прав пользователей видоизменяется и меню (например, исключаются некоторые пункты). Т.е. меняются их ID-и и индексы. Скрипт соответственно становиться нерабочим. Написание вручную в тэг заголовка результата не дало, объект не определяется. Наверное, тут уже ничем не поможешь.
Тогда вопрос такой: ТестКомплит для этой задачи подойдет?
Спасибо.


ааа, так я не тупил, а ПРЕДВИДЕЛ! =)

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

Это можно сделать. Только меню надо описать в виде списка хешей (в другой терминологии это map) для всех возможных вариантов пользователей. И где-то определить величину, которая отвечает за индекс, по которому берется информация о нужном меню. А потом пишется функция, которая будет в нужном хеше искать необходимые пункты. Можно было бы в деталях это объяснить, но есть такое подозрение, что это может оказаться и трудоемкой задачей и просто сложной для понимания.

Поэтому ...

в вашем же случае лучше все же попробовать ТестКомплит


А вот об этом

только учтите, что для того, чтобы ТестКомплит смог работать с меню, вам придется перекомпилировать приложение специальным образом

я уже выше говорил (предыдущий пост). Так что E:]XXXXX[:Э
  • 0

#14 Genka

Genka

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

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


Отправлено 22 ноября 2007 - 09:57

Это можно сделать. Только меню надо описать в виде списка хешей (в другой терминологии это map) для всех возможных вариантов пользователей. И где-то определить величину, которая отвечает за индекс, по которому берется информация о нужном меню. А потом пишется функция, которая будет в нужном хеше искать необходимые пункты. Можно было бы в деталях это объяснить, но есть такое подозрение, что это может оказаться и трудоемкой задачей и просто сложной для понимания.


на самом деле не все так просто может быть
Вполне возможно, что права там весьма настраиваемые и для любого пользователя можно включить/отключить любой пункт меню. Это усложнит задачу. Придется создавать несколько пользователей, с разными правами доступа. А вот если там только роли (Админ, юзер, гость), то гораздо проще все и можно реализовать как ты говоришь
  • 0

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

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

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


#15 vass

vass

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

  • Members
  • PipPipPipPip
  • 298 сообщений
  • ФИО:Василий

Отправлено 22 ноября 2007 - 12:57

попробуйте это:
// не забываем подключить библиотеку msw32.inc
[-] dll "user32.dll"
	[ ] int GetMenuStringA(HMENU hMenu, UINT uIDItem, out LPSTR lpString, int nMaxCount, UINT uFlag)
[ ] 
[-] 
	[-] STRING DynamicMenuTag (WINDOW f_wMenu, LIST OF STRING f_lsMenuNames)
		[ ] STRING sRetVal = "$-1"
		[ ] WINDOW wMainWindow 	// Window with menu
		[ ] HMENU hMenu 		// Handle to the menu
		[ ] const INTEGER iMAX_MENU_COUNT = 100
		[ ] STRING sMenuName
		[ ] INTEGER i, j = 0, iEmpty
		[ ] INTEGER iMaxChars = 40
		[ ] STRING sBuffer = Space (iMaxChars + 2)
		[ ] INTEGER iLen = ListCount (f_lsMenuNames)
		[ ] 
		[ ] // Get window with menu
		[ ] wMainWindow = f_wMenu
		[-] while ClassOf(wMainWindow) != MainWin
			[ ] wMainWindow = WindowParent (wMainWindow)
		[ ] 
		[ ] hMenu = GetMenu (wMainWindow.GetHandle ()) // Get hahdle to the menu
		[ ] 
		[-] for (i = 1;  i <= iLen && !IsNull (hMenu) && j < iMAX_MENU_COUNT; i++)
			[ ] iEmpty = 0
			[-] for j = 0 to iMAX_MENU_COUNT
				[ ] sMenuName = sBuffer
				[ ] GetMenuStringA (hMenu, j, sMenuName, iMaxChars, MF_BYPOSITION)
				[ ] sMenuName = StrTran (sMenuName, "&", "")
				[ ] 
				[-] if sMenuName == ""
					[ ] iEmpty++
				[-] else if MatchStr (f_lsMenuNames[i], sMenuName)
					[-] if i < iLen
						[ ] hMenu = GetSubMenu (hMenu,  j) // next submenu
					[-] else
						[ ] sRetVal = "#" + [STRING](j - iEmpty + 1)
					[ ] break
		[ ] return sRetVal
[ ] 
[ ] //////////// пример - как во вфрейме описать :
[-] window MainWin wTest
	[-] Menu File
		[ ] tag DynamicMenuTag (this, {"File"})
		[-] MenuItem Close
			[ ] tag DynamicMenuTag (this, {"File", "Close"})
		[-] MenuItem NotVeryLongClose
			[ ] tag DynamicMenuTag (this, {"File", "Not*Close"})
только это хорошо работает для Силка 7.х и младше. Для 8.x он может не сработать. В любом случае - попробуйте.
  • 0

#16 Genka

Genka

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

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


Отправлено 22 ноября 2007 - 13:55

попробуйте это:
...........
только это хорошо работает для Силка 7.х и младше. Для 8.x он может не сработать. В любом случае - попробуйте.


на всякий случай попробовал, хотя был уверен на 99%, что не сработает

оказался прав: с делфи приложением не работает
пробовал вот такой код
[-] main()
	[ ] wPF.SetActive ()
	[ ] STRING sVal = ""
	[ ] GetMenuStringA(GetMenu(wPF.hWnd), 1, sVal, 50, MF_BYPOSITION)
	[ ] Print(sVal)
возвращает пустую строку
  • 0

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

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

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


#17 vass

vass

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

  • Members
  • PipPipPipPip
  • 298 сообщений
  • ФИО:Василий

Отправлено 23 ноября 2007 - 12:08

Странно ... Делфи5, Силк7.5 :
[-] window MainWin Form1
		[ ] tag "Form1"
		[-] Menu File
			[ ] tag DynamicMenuTag(this, {"File"})
			[-] MenuItem New
				[ ] tag DynamicMenuTag(this, {"File", "New"})
	[ ] 
	[-] main ()
		[ ] Form1.SetActive ()
		[ ] Form1.File.Pick ()
		[ ] Print (Form1.File.New.Exists ())
выдало :
[ ] Form1.SetActive ()  tag="/[MainWin]Form1"
[ ] Form1.GetHandle ()  tag="/[MainWin]Form1"
[ ] GetMenu (1508452)
[ ] GetMenuStringA (172297203, 0, "										  ", 40, 1024)
[ ] Form1.File.Pick ()  tag="/[MainWin]Form1/[Menu]#1"
[ ] Form1.GetHandle ()  tag="/[MainWin]Form1"
[ ] GetMenu (1508452)
[ ] GetMenuStringA (172297203, 0, "										  ", 40, 1024)
[ ] Form1.GetHandle ()  tag="/[MainWin]Form1"
[ ] GetMenu (1508452)
[ ] GetMenuStringA (172297203, 0, "										  ", 40, 1024)
[ ] GetSubMenu (172297203, 0)
[ ] GetMenuStringA (44305293, 0, "										  ", 40, 1024)
[ ] Form1.File.New.Exists ()  tag="/[MainWin]Form1/[Menu]#1/[MenuItem]#1"
[ ] TRUE
всё отлично увидело...
... Гена, а попробуй у себя поменять в коде на
STRING sVal = "								  "
GetMenuStringA(GetMenu(wPF.hWnd), 0, sVal, 50, MF_BYPOSITION)
и еще раз запустить.
  • 0

#18 Genka

Genka

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

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


Отправлено 23 ноября 2007 - 12:36

... Гена, а попробуй у себя поменять в коде на

STRING sVal = "								  "
GetMenuStringA(GetMenu(wPF.hWnd), 0, sVal, 50, MF_BYPOSITION)
и еще раз запустить.

то же самое, не работает
правда, я не знаю версию делфи - это просто шароварное приложение, которое у меня есть, которое по простому совпадению оказалось написано на делфи
  • 0

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

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

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


#19 INside

INside

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

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

Отправлено 26 ноября 2007 - 14:06

Спасибо за советы. Функцию, Vass, попробую (хотя и Дельфи6, и Силк 7.1).
Было упомянуто, что нужно откомпилировать приложение определенным способом. Можно уточнить, что это за способ, чтобы можно было сказать разработчикам и попробовать перекомпиляцию.
  • 0

#20 Genka

Genka

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

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


Отправлено 26 ноября 2007 - 14:32

Было упомянуто, что нужно откомпилировать приложение определенным способом. Можно уточнить, что это за способ, чтобы можно было сказать разработчикам и попробовать перекомпиляцию.

Ну это касается ТестКомплита. Скачайте его и почитайте в хэлпе раздел про делфи приложения. Там все написано.
Скачать ТК можно тут
http://www.automated...plete/index.asp
  • 0

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

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

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



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

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