SilkTest не описывает объекты
#1
Отправлено 20 ноября 2007 - 07:25
#2
Отправлено 20 ноября 2007 - 07:44
Что за приложение? Какая технология используется (Java, .NET, WEB)? На чем написано приложение? Какие библиотеки используются?В процессе работы SilkTest (7.1.0.) не видит заголовки пунктов (подпунктов) меню в окне Window Declaration, описывает их как MenuN.MenuItemN. Разработчики утверждают, что они прописаны. Для нормальной работы скрипта нужны именно заголовки. Подскажите, пожалуйста, как решить эту проблему.
Иначе это будет гадание на кофейной гуще.
#3
Отправлено 20 ноября 2007 - 11:52
#4
Отправлено 20 ноября 2007 - 12:12
это нормально. У СилкТеста нет поддержки Делфи-приложений. И если некоторые контролы можно примаппить и работать с ними, как со стандартными, то с меню это не прокатывает.Приложение Delphi, библиотеки стандартные. Для меню использовался стандартный компонент Tmainmenu.
Если вы хотите работать с Делфи приложением и нормально работать со всеми контролами - СилкТест вам не подойдет
TestComplete для начинающих (видеозаписи курса)
Software Testing Automation Tips (50 вещей, которые должен знать каждый автоматизатор, книга на английском языке)
Онлайн-учебник "Автоматизация тестирования от «А» до «Ы»"
Сборник рецептов по TestComplete (книга на английском языке)
Онлайн-учебник по TestComplete
Онлайн-учебник по SilkTest
#5
Отправлено 20 ноября 2007 - 12:52
Наверное, придется осваивать что-то еще кроме Силка. Но и его бросать не хочется (столько времени потрачено на изучение программы, написание скриптов). Может быть все же есть какой-то обходной маневр? Ведь есть же люди, которые тестируют Дельфи – приложения именно на Силке.
#6
Отправлено 20 ноября 2007 - 13:13
Спасибо, Genka.
Наверное, придется осваивать что-то еще кроме Силка. Но и его бросать не хочется (столько времени потрачено на изучение программы, написание скриптов). Может быть все же есть какой-то обходной маневр? Ведь есть же люди, которые тестируют Дельфи – приложения именно на Силке.
ну обходной маневр есть конечно: напишите главному окну метод MenuPick например, в который передавайте в стандартной форме силковой меню, которое хотите выбрать (типа, "File;Close"), а внутри опишите структуру, в которой сопоставьте имена менюшек с их номерами. И дальше работайте с этим методом. Если в приложении что-то изменится - вам достаточно будет сделать изменения в этой структуре.
Только главное ее хорошенько продумать сразу, и все
TestComplete для начинающих (видеозаписи курса)
Software Testing Automation Tips (50 вещей, которые должен знать каждый автоматизатор, книга на английском языке)
Онлайн-учебник "Автоматизация тестирования от «А» до «Ы»"
Сборник рецептов по TestComplete (книга на английском языке)
Онлайн-учебник по TestComplete
Онлайн-учебник по SilkTest
#7
Отправлено 20 ноября 2007 - 16:08
Стоп, но если каждый пункт меню поотдельности видится, то зачем же так извращаться? Просто во фрейме дать понятные имена пунктам, а использовать индексы в тэгах. То же самое будет, а использовать легче (автозаполнение работает)Спасибо, Genka.
Наверное, придется осваивать что-то еще кроме Силка. Но и его бросать не хочется (столько времени потрачено на изучение программы, написание скриптов). Может быть все же есть какой-то обходной маневр? Ведь есть же люди, которые тестируют Дельфи – приложения именно на Силке.
ну обходной маневр есть конечно: напишите главному окну метод MenuPick например, в который передавайте в стандартной форме силковой меню, которое хотите выбрать (типа, "File;Close"), а внутри опишите структуру, в которой сопоставьте имена менюшек с их номерами. И дальше работайте с этим методом. Если в приложении что-то изменится - вам достаточно будет сделать изменения в этой структуре.
Только главное ее хорошенько продумать сразу, и все
#8
Отправлено 20 ноября 2007 - 16:25
Стоп, но если каждый пункт меню поотдельности видится, то зачем же так извращаться? Просто во фрейме дать понятные имена пунктам, а использовать индексы в тэгах. То же самое будет, а использовать легче (автозаполнение работает)
я дважды тупанул сегодня на этом форуме
вот к чему приводит долгая работа с ТестКомплитом
меня в общем не слушайте, слушайте КаНоНа (но это не значит, что я перестану говорить здесь )
ЗЫ надо выпить, или наоборот - бросить пить. Как-то так
TestComplete для начинающих (видеозаписи курса)
Software Testing Automation Tips (50 вещей, которые должен знать каждый автоматизатор, книга на английском языке)
Онлайн-учебник "Автоматизация тестирования от «А» до «Ы»"
Сборник рецептов по TestComplete (книга на английском языке)
Онлайн-учебник по TestComplete
Онлайн-учебник по SilkTest
#9
Отправлено 21 ноября 2007 - 08:32
Это карма.Стоп, но если каждый пункт меню поотдельности видится, то зачем же так извращаться? Просто во фрейме дать понятные имена пунктам, а использовать индексы в тэгах. То же самое будет, а использовать легче (автозаполнение работает)
я дважды тупанул сегодня на этом форуме
вот к чему приводит долгая работа с ТестКомплитом
Неее, надо выпить и бросить. И так несколько разЗЫ надо выпить, или наоборот - бросить пить. Как-то так
#10
Отправлено 21 ноября 2007 - 10:29
Дело в том, что заголовки нужны для тэга. Силк видит ID и индексы (иногда только индексы). Приложение запускается и тестируется под разными пользователями. В зависимости от прав пользователей видоизменяется и меню (например, исключаются некоторые пункты). Т.е. меняются их ID-и и индексы. Скрипт соответственно становиться нерабочим. Написание вручную в тэг заголовка результата не дало, объект не определяется. Наверное, тут уже ничем не поможешь.
Тогда вопрос такой: ТестКомплит для этой задачи подойдет?
Спасибо.
#11
Отправлено 21 ноября 2007 - 13:42
Если приложение не перекомпилировать особым образом, то будут те же проблемыСтоп, наверное я не правильно поставила вопрос.
Дело в том, что заголовки нужны для тэга. Силк видит ID и индексы (иногда только индексы). Приложение запускается и тестируется под разными пользователями. В зависимости от прав пользователей видоизменяется и меню (например, исключаются некоторые пункты). Т.е. меняются их ID-и и индексы. Скрипт соответственно становиться нерабочим. Написание вручную в тэг заголовка результата не дало, объект не определяется. Наверное, тут уже ничем не поможешь.
Тогда вопрос такой: ТестКомплит для этой задачи подойдет?
Спасибо.
В принципе по ID тоже тег достаточно уникальный. А вот по индексам - это конечно проблемы
#12
Отправлено 21 ноября 2007 - 13:46
Стоп, наверное я не правильно поставила вопрос.
Дело в том, что заголовки нужны для тэга. Силк видит ID и индексы (иногда только индексы). Приложение запускается и тестируется под разными пользователями. В зависимости от прав пользователей видоизменяется и меню (например, исключаются некоторые пункты). Т.е. меняются их ID-и и индексы. Скрипт соответственно становиться нерабочим. Написание вручную в тэг заголовка результата не дало, объект не определяется. Наверное, тут уже ничем не поможешь.
Тогда вопрос такой: ТестКомплит для этой задачи подойдет?
Спасибо.
ааа, так я не тупил, а ПРЕДВИДЕЛ! =)
на самом деле можно извернуться и написать метод, который будет это учитывать
правда, я представляю это себе весьма смутно, но в принципе можно
в вашем же случае лучше все же попробовать ТестКомплит
только учтите, что для того, чтобы ТестКомплит смог работать с меню, вам придется перекомпилировать приложение специальным образом
TestComplete для начинающих (видеозаписи курса)
Software Testing Automation Tips (50 вещей, которые должен знать каждый автоматизатор, книга на английском языке)
Онлайн-учебник "Автоматизация тестирования от «А» до «Ы»"
Сборник рецептов по TestComplete (книга на английском языке)
Онлайн-учебник по TestComplete
Онлайн-учебник по SilkTest
#13
Отправлено 22 ноября 2007 - 09:13
Это можно сделать. Только меню надо описать в виде списка хешей (в другой терминологии это map) для всех возможных вариантов пользователей. И где-то определить величину, которая отвечает за индекс, по которому берется информация о нужном меню. А потом пишется функция, которая будет в нужном хеше искать необходимые пункты. Можно было бы в деталях это объяснить, но есть такое подозрение, что это может оказаться и трудоемкой задачей и просто сложной для понимания.Стоп, наверное я не правильно поставила вопрос.
Дело в том, что заголовки нужны для тэга. Силк видит ID и индексы (иногда только индексы). Приложение запускается и тестируется под разными пользователями. В зависимости от прав пользователей видоизменяется и меню (например, исключаются некоторые пункты). Т.е. меняются их ID-и и индексы. Скрипт соответственно становиться нерабочим. Написание вручную в тэг заголовка результата не дало, объект не определяется. Наверное, тут уже ничем не поможешь.
Тогда вопрос такой: ТестКомплит для этой задачи подойдет?
Спасибо.
ааа, так я не тупил, а ПРЕДВИДЕЛ! =)
на самом деле можно извернуться и написать метод, который будет это учитывать
правда, я представляю это себе весьма смутно, но в принципе можно
Поэтому ...
в вашем же случае лучше все же попробовать ТестКомплит
А вот об этом
я уже выше говорил (предыдущий пост). Так что E:]XXXXX[:Этолько учтите, что для того, чтобы ТестКомплит смог работать с меню, вам придется перекомпилировать приложение специальным образом
#14
Отправлено 22 ноября 2007 - 09:57
Это можно сделать. Только меню надо описать в виде списка хешей (в другой терминологии это map) для всех возможных вариантов пользователей. И где-то определить величину, которая отвечает за индекс, по которому берется информация о нужном меню. А потом пишется функция, которая будет в нужном хеше искать необходимые пункты. Можно было бы в деталях это объяснить, но есть такое подозрение, что это может оказаться и трудоемкой задачей и просто сложной для понимания.
на самом деле не все так просто может быть
Вполне возможно, что права там весьма настраиваемые и для любого пользователя можно включить/отключить любой пункт меню. Это усложнит задачу. Придется создавать несколько пользователей, с разными правами доступа. А вот если там только роли (Админ, юзер, гость), то гораздо проще все и можно реализовать как ты говоришь
TestComplete для начинающих (видеозаписи курса)
Software Testing Automation Tips (50 вещей, которые должен знать каждый автоматизатор, книга на английском языке)
Онлайн-учебник "Автоматизация тестирования от «А» до «Ы»"
Сборник рецептов по TestComplete (книга на английском языке)
Онлайн-учебник по TestComplete
Онлайн-учебник по SilkTest
#15
Отправлено 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 он может не сработать. В любом случае - попробуйте.
#16
Отправлено 22 ноября 2007 - 13:55
попробуйте это:
...........
только это хорошо работает для Силка 7.х и младше. Для 8.x он может не сработать. В любом случае - попробуйте.
на всякий случай попробовал, хотя был уверен на 99%, что не сработает
оказался прав: с делфи приложением не работает
пробовал вот такой код
[-] main() [ ] wPF.SetActive () [ ] STRING sVal = "" [ ] GetMenuStringA(GetMenu(wPF.hWnd), 1, sVal, 50, MF_BYPOSITION) [ ] Print(sVal)возвращает пустую строку
TestComplete для начинающих (видеозаписи курса)
Software Testing Automation Tips (50 вещей, которые должен знать каждый автоматизатор, книга на английском языке)
Онлайн-учебник "Автоматизация тестирования от «А» до «Ы»"
Сборник рецептов по TestComplete (книга на английском языке)
Онлайн-учебник по TestComplete
Онлайн-учебник по SilkTest
#17
Отправлено 23 ноября 2007 - 12:08
[-] 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)и еще раз запустить.
#18
Отправлено 23 ноября 2007 - 12:36
то же самое, не работает... Гена, а попробуй у себя поменять в коде на
STRING sVal = " " GetMenuStringA(GetMenu(wPF.hWnd), 0, sVal, 50, MF_BYPOSITION)и еще раз запустить.
правда, я не знаю версию делфи - это просто шароварное приложение, которое у меня есть, которое по простому совпадению оказалось написано на делфи
TestComplete для начинающих (видеозаписи курса)
Software Testing Automation Tips (50 вещей, которые должен знать каждый автоматизатор, книга на английском языке)
Онлайн-учебник "Автоматизация тестирования от «А» до «Ы»"
Сборник рецептов по TestComplete (книга на английском языке)
Онлайн-учебник по TestComplete
Онлайн-учебник по SilkTest
#19
Отправлено 26 ноября 2007 - 14:06
Было упомянуто, что нужно откомпилировать приложение определенным способом. Можно уточнить, что это за способ, чтобы можно было сказать разработчикам и попробовать перекомпиляцию.
#20
Отправлено 26 ноября 2007 - 14:32
Ну это касается ТестКомплита. Скачайте его и почитайте в хэлпе раздел про делфи приложения. Там все написано.Было упомянуто, что нужно откомпилировать приложение определенным способом. Можно уточнить, что это за способ, чтобы можно было сказать разработчикам и попробовать перекомпиляцию.
Скачать ТК можно тут
http://www.automated...plete/index.asp
TestComplete для начинающих (видеозаписи курса)
Software Testing Automation Tips (50 вещей, которые должен знать каждый автоматизатор, книга на английском языке)
Онлайн-учебник "Автоматизация тестирования от «А» до «Ы»"
Сборник рецептов по TestComplete (книга на английском языке)
Онлайн-учебник по TestComplete
Онлайн-учебник по SilkTest
Количество пользователей, читающих эту тему: 0
0 пользователей, 0 гостей, 0 анонимных