Альтернативные методы доступа к элементам управления, которые не предоставляются MSAA/UIAutomation.

Я пишу тесты CodedUI для приложения, написанного на VB6, и мне нужно сделать утверждение на нескольких разных ярлыках. Метки в VB6 не реализуют MSAAA, поэтому они не отображаются в Spy++ или Inspector. Изменение кода приложения для автоматизированного тестирования будет тяжелой битвой.

Тесты изначально были написаны в Rational, и инспектор объектов Rational может получить метку и большинство ее свойств. Поэтому я знаю, что можно получить информацию, которую я ищу. Я предполагаю, что Rational использует что-то в winapi для доступа к свойствам метки, я предполагаю, что что-то должно отрисовывать метку на экране.

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


person stoj    schedule 02.03.2012    source источник
comment
У меня была такая же проблема, я начал писать расширение для CUIT, которое будет подключаться к приложению VB6 с использованием COM и WCF. Я не мог найти альтернативу в то время. Мы прекратили работу над ним, поскольку это была большая работа, и мы могли видеть, что срок службы приложения подходит к концу. Было бы интересно посмотреть, насколько это рационально. вам нужно добавить какие-либо плагины в приложение VB6?   -  person Ryan Burnham    schedule 04.03.2012
comment
Я не присутствовал при внедрении Rational, но мне сказали, что в приложение VB6 не было добавлено никаких дополнительных модулей, чтобы заставить его работать с Rational. Мне было бы интересно узнать, как вы подходите к получению значений из меток VB6.   -  person stoj    schedule 05.03.2012
comment
В основном приходилось писать код VB6, чтобы получить значение каждого типа свойства/элемента управления. Затем он отправляет его обратно в расширение закодированного пользовательского интерфейса через COM для границы VB6 с .net, а затем WCF, чтобы отправить его обратно в расширение. в теории это должно работать, но это большая работа. Я начал документировать его здесь rburnham.wordpress. ком/2010/08/17/   -  person Ryan Burnham    schedule 06.03.2012
comment
Он может использовать обмен сообщениями, я нашел эту ссылку, которая может помочь stackoverflow.com/questions/9151892/ Мы начали изучать обмен сообщениями, но для отправки информации обратно требуется WindowHandle. Однако расширение CUIT не имеет пользовательского интерфейса и динамически загружается во время выполнения.   -  person Ryan Burnham    schedule 06.03.2012
comment
В то время я думал, что вам понадобится плагин VB6, который отправляет сообщения плагину CodedUI Test, который потребует, чтобы Coded UI Test имел дескриптор окна. Глядя на эту ссылку, я думаю, что плагин CodedUI может получать информацию напрямую без плагина VB6. Если вам интересно, я мог бы помочь с расширением Coded UI. Возможно, нужно запустить проект с открытым исходным кодом?   -  person Ryan Burnham    schedule 06.03.2012
comment
Когда я опубликовал это изначально, я не осознавал, что тесты CodedUI не получали фактическое имя/доступное имя из приложения VB6. Я просто предположил, что проблемы, с которыми я столкнулся при поиске элементов управления, были связаны с выгребной ямой, которая является кодовой базой для этого конкретного приложения.   -  person stoj    schedule 12.03.2012
comment
Устаревшие приложения VB6, вероятно, останутся в обозримом будущем. Я знаю, что, вероятно, получил бы неплохую выгоду от написания расширения с открытым исходным кодом для получения точных значений из приложений VB6. Я думаю, что и многие другие люди поступили бы так же.   -  person stoj    schedule 12.03.2012
comment
У меня было немного времени, чтобы посмотреть на это. Я смог получить основную информацию через сообщения, но она все еще ограничена. Свойство Name элементов управления не отображается, поэтому нет уникального способа их идентификации. Я обнаружил, что вы можете использовать идентификатор, но это, похоже, меняется, когда изменяется макет элемента управления. Метки VB6, похоже, вообще не отображаются. Я хотел бы знать, насколько это рационально   -  person Ryan Burnham    schedule 30.03.2012
comment
Да, на этикетках VB6 я отказался от попыток получить значения из приложения и просто использую OCR на изображении этикетки, что доставляет неудобства, но работает достаточно хорошо.   -  person stoj    schedule 02.04.2012