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

Фотография

silktest для новичков


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

#41 KaNoN

KaNoN

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

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

Отправлено 30 августа 2006 - 07:49

Всем привет! Я токже недавно начала изучать Silk Test. Сейчас меня интересует вопрос как опровить контекстное меню дочернего окна?. Есть массив в котором содержятся наименования пунктов меню.
1 - Мне нужно проверить совпадают ли наименования пунктов контекстного меню (к.м.) с теми что в массиве.
2 - Нужно вызывать пункты к.м. по названиям из массива (т.е. если наименования совпадают то выполнять задачу)
Помогите плиз....уже замучалась перебирать варианты


На первой странице этой темы есть ссылка на прикрепленный файл 02.htm.
В главе 2.4.16 PopupMenu рассказывается на примере как описать контекстное меню во фрейме и как его использовать. У такого меню только объявление особое, а в все остальные операции полностью аналогичны операциям с меню.
Попробуйте сделать как-то наподобие
  • 0

#42 Dace

Dace

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

  • Members
  • Pip
  • 7 сообщений
  • ФИО:НИР

Отправлено 06 сентября 2006 - 07:51

Такс, признаюсь, что я смотрела второй файл, но ничего там про PopupMenu не поняла (мне стыдно за это, признаюсь). Но вот при помощи идентификации при записи смогла выловить такую строку
MainWin("Автоматизация|$D:\ETALON_2006\Bsmain32.exe[1]").ChildWin("Задачи").CustomWin("[AfxFrameOrView42]#1|$59648").PopupStart("").MenuItem("Добавить|$10173")
еть описание окна Задачи и
[-] window ChildWin Клиенты
[ ] tag "Задачи"
[ ] parent Автоматизация
[-] CustomWin AfxFrameOrView421
[-] multitag "[AfxFrameOrView42]#1"
[ ] "$59648"
Как сюда же прописать все, что связано с PopupMenu не понимаю. Нужен хелп.
  • 0
http://MinskMarket.net - Лучший шоппинг в Интернет

#43 Dace

Dace

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

  • Members
  • Pip
  • 7 сообщений
  • ФИО:НИР

Отправлено 06 сентября 2006 - 08:18

решила перебрать еще раз файл 02(в частности главу 2.4.16)
И вот что получилось
[-] winclass ЗадачиPopupMenu:PopupMenu
[-] POINT Point
[ ] tag "$PopupMenu/({Point.x},{Point.y})"
[-] MenuItem Adds
[ ] tag "Add"
[-] MenuItem Edit
[ ] tag "Edit"
[-] MenuItem Copy
[ ] tag "Copy"
[-] MenuItem Legend
[ ] tag "Legend"
[-] MenuItem Report
[ ] tag "Report"
[-] window ChildWin Задачи
[ ] tag "Задачи"
[ ] parent Автоматизация
[-] CustomWin AfxFrameOrView421
[-] multitag "[AfxFrameOrView42]#1"
[ ] "$59648"
[ ]ЗадачиPopupMenu PopupMenu
при компиляции вызывается ошибка PopupMenu is not a window class. Я вот написала ЗадачиPopupMenu:PopupMenu, просто взяла по примеру(наименование окна + PopupMenu) может я чего-то не поняла?
:crazy:
  • 0
http://MinskMarket.net - Лучший шоппинг в Интернет

#44 KaNoN

KaNoN

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

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

Отправлено 06 сентября 2006 - 08:23

Буквы кириллицы в именах объектов лучше избегать.
Описать лучше как-то

winclass TasksPopupMenu : PopupMenu

Пробуйте. PopupMenu - это стандартный класс, он должен быть. А имена объектов нужно называть используя латиницу. И еще, при постинге кода лучше как-то проыерьте размещение всех строк (можно воспользоваться предпросмотром), а то в последнем примере все элементы как бы друг под другом и не видно реальной вложенности
  • 0

#45 Dace

Dace

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

  • Members
  • Pip
  • 7 сообщений
  • ФИО:НИР

Отправлено 06 сентября 2006 - 08:47

Спасиб за экстренную помощь. (/mode +респект KaNoN) :)
Так а если у меня окно так называется Задачи, то я его должна обьявить как
[*]window ChildWin Tasks
[] tag "Задачи"
[] parent Автоматизация
Или могу написать
[*]window ChildWin Tasks
[] tag "Tasks"
[] parent Автоматизация
?
Извините, но просто я пока вооще полным чайником себя чувствую.
Пробвала записать вторым вариантом.
потом при обьявлении написать winclass TasksPopupMenu : PopupMenu - ошибка таже.
Буду копаться еще.!
(уж0с....с этим выравниванием)
  • 0
http://MinskMarket.net - Лучший шоппинг в Интернет

#46 KaNoN

KaNoN

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

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

Отправлено 06 сентября 2006 - 09:09

Я бы вообще рекомендовал все названия объектов окон писать латиницей (именно имена объектов, таги могут быть какими угодно). Затем, имя объекта окна не должно являться именем оконного класса, то есть запись

window MyPopupMenu PopupMenu

неверна, так как имя переменной не должно совпадать с именем некоторого оконного класса

Исправьте для начала эти ошибки
  • 0

#47 vass

vass

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

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

Отправлено 13 сентября 2006 - 13:10

Еще совет : сотрите название винкласса и напишите его заново, контролируя язык ввода. Дело в том что в латинице и кириллице много похожих букв "Р","а","о","е" и пр. А особенно плохо с "с" - т.к. кнопка у них общая ...
Но коды у них конечно разные, вот СилкТест и сообщает об ошибке.
  • 0

#48 Light_moon

Light_moon

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

  • Members
  • Pip
  • 30 сообщений
  • ФИО:Elena

Отправлено 03 октября 2006 - 13:42

Добрый день! :good:
Я только знакомлюсь с программой SilkTest, версия 7.1. Читаю по вашему совету 01, 02.htm. При работе с тестовым приложением TestApp пока никаких вопросов не возникает.
Паралельно пытаюсь применять все прочитанное непосредственно к своему приложению.
Само приложение написано на Visual C++, для GUI используется библиотека ProfIUS.
Вот что у меня получается (или не получается):
- запускаю Silktest;
- создаю новый проект;
- создаю новый Test Frame для приложения - Frame создается, но вот какая в нем содержится информация:
...
[-] CustomWin MainMenu
[-] msw multitag "[ProfUIS-ControlBar]Main Menu"
[ ] "[ProfUIS-ControlBar]$128"
[+] CustomWin ProfUISDockBar24
[ ] msw tag "[ProfUIS-DockBar]$59422[6]"
[-] CustomWin ProfUISDockBar9
[ ] msw tag "[ProfUIS-DockBar]$59420[5]"
...
Это конечно не вся, это часть.
Скажите, возможно ли получить как-то доступ к главному меню или другим элементам окна в данном случае?
  • 0

#49 KaNoN

KaNoN

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

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

Отправлено 03 октября 2006 - 13:51

Это нестандартные контролы. Есть несколько вариантов работы с такими:
1) Примапить к стандартным классам
2) Подключить расширения, которые возможно используются.
3) Подключить функциональность из внешних длл-файлов, в которых реализованы функции по работе с теми или иными объектами
4) Работать с объектами только через клавиатуру и Clipboard (это самый-самый обходной вариант)

В первом случае работа с такими контролами весьма ограничена, а второй случай - это просто геморрой и не факт, что поможет. В третьем случае надо беспокоить программистов, а также длл надо периодически обновлять.

Вот скорее всего что-то нужно сделать среднее между вариантом 2 и 3. Точнее сказать не могу.
  • 0

#50 Light_moon

Light_moon

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

  • Members
  • Pip
  • 30 сообщений
  • ФИО:Elena

Отправлено 03 октября 2006 - 14:20

А можно пунк 3 описать поподробнее - как именно можно подключить длл-файл?
  • 0

#51 KaNoN

KaNoN

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

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

Отправлено 04 октября 2006 - 07:04

А вот пример из файла mswfun32.inc, который находится в каталоге, куда установлен СилкТест:

[+] dll "kernel32.dll"
	[ ] DWORD GetTickCount ()
	[ ] DWORD GetCurrentTime () alias "GetTickCount"

В длл-файле kernel32.dll находятся функции определенного вида. К некоторым из них мы вполне можем обратиться. В частности там есть
функция DWORD GetTickCount (). Согласно предыдущей записи, мы
объявляем в Силке эту функцию и указываем, что ее код хранится в длл.

Вторая функция поинтереснее. Дело в том, что имя функции в Силке может
не совпадать с именем функции в длл. В этом случае нужно увязать имена
между собой. Поэтому запись DWORD GetCurrentTime () alias "GetTickCount"
воспринимается как объявление функции GetCurrentTime (), которая запустит функцию GetTickCount, хранящуюся в kernel32.dll.
  • 0

#52 Light_moon

Light_moon

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

  • Members
  • Pip
  • 30 сообщений
  • ФИО:Elena

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

Про длл вроде понятно, спасибо.
Вот поспрашивала у программистов, оказывается они работают непосредственно с исходинками ProfIUS, так что подключать в общем-то нечего.
Также узнала что ProfIUS - это надстройка над MFC. Причем элементы меню и тулбаров - рисованные.
Есть ли какое-то решение данной проблемы?
  • 0

#53 KaNoN

KaNoN

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

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

Отправлено 04 октября 2006 - 09:31

С рисовками придется работать наощупь, то есть используя комбинации клавиш или где-то фиксировать координаты объектов. То есть ,если какой-то объект не имеет оконной структуры, то Силк с ним как с объектом работать не будет изначально.
  • 0

#54 Light_moon

Light_moon

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

  • Members
  • Pip
  • 30 сообщений
  • ФИО:Elena

Отправлено 04 октября 2006 - 10:54

Да, вот этого я и боялась, думала, что есть другой вариант.
Спасибо, что не оставили без ответа.
  • 0

#55 KaNoN

KaNoN

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

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

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

Ну а что поделать? Главное понимать, что СилкТест работает с оконными объектами. Если какой-то объект не является окном изначально, то тут уж только всякими выкрутками что-то можно сделать, вплоть до того, что делать какие-то "обертки" в виде функций, хранящихся в длл, которые позволяют извлечь ту или иную информацию об объекте.
  • 0

#56 Гость_Hyperfly_*

Гость_Hyperfly_*
  • Guests

Отправлено 06 октября 2006 - 09:12

Главное понимать, что СилкТест работает с оконными объектами...

Просмотр сообщения

Стало быть, если например нужно управлять приложением в Fullscreen режиме (когда не видно никаких контролов), то ничего и не получится?

#57 KaNoN

KaNoN

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

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

Отправлено 06 октября 2006 - 09:46

Я вообще подразумевал, то, что СилкТест работает с теми объектами, которые являются окнами в понимании операционной системы. Если это просто рисунок на окне, то Силк его как объект воспринимать не будет. Ну это примероно то же, что и рисованная дверь на стене. Дверь визульно вроде как есть, но войти в нее не выйдет, да и вообще привычным способом с ней не поработаешь.
  • 0

#58 Light_moon

Light_moon

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

  • Members
  • Pip
  • 30 сообщений
  • ФИО:Elena

Отправлено 13 октября 2006 - 10:54

Добрый день!
Я опять надеюсь на вашу помощь. Тестирую программу которая открывает уже созданные (другими программами) файлы и работает с ними.
Пишу тест-кейс, который выполняет открытие файла - это у меня получилось и работает. Далее возникла ситуация, когда при открытии файла выдается ошибка - например, файл другого формата или поврежден. Хотелось сделать так чтобы эта ошибка тоже как-то анализировалась. Для этого я добавила в тест-кейс проверку после открытия файла, было ли создано окно с ошибкой - если да, то выводить текст ошибки и закрывать окно.
Вот что у меня получилось:
[-] window DialogBox dError
	[+] multitag "Error"
  [ ] "$MessageBox[2]"
	[+] PushButton OK
  [+] multitag "OK"
 	 [ ] "$2"
	[+] CustomWin Icon1
  [ ] msw tag "[Icon]$20"
	[-] StaticText CanTOpenFile
  [-] multitag " "
 	 [ ] "$65535"


[-] testcase Open_file() appstate DefaultBaseState
  [ ] Print("Step 1: From Main menu select File > Open")
  [ ] wMain.SetActive()
  [ ] wMain.File.MenuItem1.Pick()
  [ ] Print("  Window Open - opens")
  [ ] Print("")
  [ ] Print("Step 2: Select and open file")
  [ ] dOpen.SetActive()
  [ ] dOpen.FileName.sValue="test file"
  [ ] dOpen.Open.Click()
                  [ ] // Проверка, создано ли окно с ошибкой 
  [-] if(dError.Exists ()) 
 	 [ ] Print (dError.CanTOpenFile.GetText())
 	 [ ] dError.OK.Click()
  [ ] Print("  File - opens")
  [ ] wMain.File.MenuItem14.Pick()
  [ ] Print ("Program - closes")
	[ ] 
	[ ] Print("End of testcase")

Все работает, если ошибка действительно возникает. Но теперь, если файл открывается без ошибок, то при прохождении тест-кейса выдается ошибка:
*** Error: Window '[StaticText]$65535' was not found

Я догадываюсь из-за чего эта ошибка - при открытии файла показывается окно с процентами выполнения открытия. И Silk test, наверное, воспринимет это окно с прогресом, как окно с ошибкой, и пытается считать из него текст.

Как мне решить эту проблему? Или может есть какой-то другой способ отлавливать сообщения об ошибках и предупреждения?
  • 0

#59 KaNoN

KaNoN

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

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

Отправлено 13 октября 2006 - 10:58

Попробуйте проверять существование не самого окна ошибки, а какого-нибудь элемента внутри него, например вместо

if(dError.Exists ())

использовать

if(dError.CanTOpenFile.Exists ())

или

if(dError.OK.Exists ())

Может помочь
  • 0

#60 Light_moon

Light_moon

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

  • Members
  • Pip
  • 30 сообщений
  • ФИО:Elena

Отправлено 13 октября 2006 - 13:39

О, спасибо. Действительно так получилось.
Только вот теперь другая проблема - когда я прохожу тест-кейс в режиме дебага - все отрабатывает правильно. А вот когда запускаю его на выполение не в дебаге, то проверка if(dError.CanTOpenFile.Exists ()) или вообще не выполняется или выполняется не правильно, так как шаги в этом блоке if {...} не выполняются.
  • 0


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

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