2010-07-27 3 views
1

Я работаю над некоторым сценарием GUI-теста для приложения Windows C# .net. Я использую Ruby для тестирования, и мои ноги официально влажны в областях WIN32API, но я, конечно, не слишком уверен в этом. Как факт, я чувствую, что мне не хватает фундаментального понимания. На этом этапе единственный способ узнать, как получить доступ к различным элементам управления, - это сочетание класса управления и, возможно, определенного идентификационного текста.Найти конкретную кнопку с WIN32API Ruby

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

Есть ли способ, который я мог бы использовать для получения определенной кнопки? Я играл с идеей делать это с помощью относительного позиционирования, но это отстой, и я не очень заинтересован в этом.

Я имею доступ к исходному коде; если есть определенный идентификатор/свойство, которое я могу установить, я более чем готов. На данный момент я просто незнаю.

ответ

0

К сожалению, это, вероятно, не легко , Вы хотите перечислить все окна и их детей и искать «подсказки», какие кнопки вы хотите каким-то образом, используя win32api.

Пример «перечисления всех окон» можно найти в win32screenshot (поиск по «window_titles»).

http://github.com/rdp/win32screenshot

-r

+0

Grrrr .... Как вы сказали, нелегко. На эту проблему действительно нет ответа. Перечисление всех детей - единственный возможный вариант, который я нашел на этом этапе, и «подсказки», к которым я должен был обратиться, - относительное позиционирование. Использование этого в качестве платформы тестирования Windows быстро становится необязательным. На самом деле облом, я с нетерпением ждал этого. Спасибо за попытку. –

+0

да. В последней версии win32screenshot gem есть некоторые «помощники» в классе Win32 :: Screenshot :: Util, если это какая-то помощь. – rogerdpack

-1

Ok, если есть значок, то вы можете перейти на страницу и просмотреть код. Затем узнайте имя значка кнопки в коде просмотра. Вы получаете параметр scr и alt, а затем копируете имя и прошлое в следующем коде.

ie.image (: ЦСИ,/имя иконки /). Нажмите

или

ie.image (: альт,/имя иконки /). Нажмите

+0

Это приложение для мышления, которое не отображается в браузере. –

0

UI Automation, как это PITA. Я не знаю Ruby, поэтому я не могу помочь вам в деталях, но я могу предоставить некоторые из них из последней версии, основанной на gui, которую я написал. Это было сделано в C#, и я использовал System.Runtime.InteropServices для доступа к различным функциям в файле user32.dll.

Тогда я смог построить различные методы, которые получили ручку различных элементов GUI. Часто это было связано с получением дескриптора родительского окна, а затем связанных дочерних элементов, пока я не получил правильный элемент управления, а затем использовал дескриптор для выполнения какой-либо функции, необходимой для этого элемента управления. Инструмент, подобный Spy ++ или WinID, очень полезен для понимания того, какие отношения между дочерним и родительским элементами управления, а также выяснить, получаете ли вы правильную ручку, когда вы строите свою проводку.

Извините, я не могу вам сразу помочь.

+0

Вы правы, что это PITA. Я уже использовал Spy ++, но лучшее, что дает вам, - это дескриптор управления. Моя проблема в том, что у меня есть 7 кнопок, все дети одного и того же родителя (все кнопки имеют один и тот же тип управления). Я должен их перечислить. Спасибо за попытку. –

2

В настоящий момент у меня очень похожая проблема. Вы можете попробовать установить идентификаторы/средства автоматизации на форму и ее элементы управления, а затем использовать ruby ​​+ ironruby + bewildr.

https://github.com/natritmeyer/bewildr

Существует большая пробегают в DotNetDevDude: http://dotnetdevdude.com/Blog/2010/08/23/AutomatedWPFUITestingUsingIronRubyAndCucumberWithBewildr.aspx

удачи.

Смежные вопросы