UI Automation White framework NonComVisibleBaseClass было обнаружено исключение

Я тестирую приложение, которое загружает файл PowerPoint (.ppt или .pptx), вставляя его. Приложение выглядит так же, как PowerPoint, с некоторыми дополнительными настройками, когда файл загружается внутри приложения. Когда я пытаюсь автоматизировать приложение, я нажимаю кнопку, чтобы загрузить файл PowerPoint в приложение. После процесса загрузки белая рамка не может продолжить воспроизведение.

Когда я снова запускаю тот же тест, я получаю исключение «Обнаружен NonComVisibleBaseClass».

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


person S.Roshanth    schedule 13.03.2014    source источник


Ответы (2)


Это известная проблема.
http://social.msdn.microsoft.com/Forums/en-US/27c3bae8-41fe-4db4-8022-e27d333f714e/noncomvisiblebaseclass-was-detected?forum=Vsexpressvb

  1. Перейдите к Отладка->Исключения...
  2. Разверните «Управляемые помощники по отладке».
  3. Снимите флажок с параметра NonComVisibleBaseClass Thrown.
  4. Нажмите [ОК]
person drets    schedule 13.03.2014
comment
Спасибо за ответ, но я пробовал. Теперь не было обнаружено исключение NonComVisibleBaseClass, но теперь я получил исключение Null reference. Это происходит только после того, как нажатие кнопки загружает слайды PowerPoint внутри приложения. - person S.Roshanth; 14.03.2014
comment
Я думаю, что вы должны добавить официантов (простой вариант - Thread.Sleep(1000)) в некоторые места. Это исключение может произойти, если вы пытаетесь нажать на кнопку, которая еще не появилась (например, myButton.Click()). - person drets; 14.03.2014
comment
Хорошо, но когда я нажимаю кнопку, загружается новое окно. После этого тесты проваливаются. Есть ли вероятность того, что статус приложения (внутренние изменения процесса) не поддерживает тестирование после загрузки PowerPoint внутри приложения. - person S.Roshanth; 14.03.2014
comment
Согласно моему анализу, я обнаружил, что после загрузки PowerPoint внутри приложения все элементы управления меняются на пользовательские элементы управления. Есть ли способ обрабатывать пользовательские элементы управления внутри White framework? - person S.Roshanth; 19.03.2014
comment
@S.Roshanth: Я также сталкиваюсь с той же проблемой при идентификации элемента управления с помощью автоматизации пользовательского интерфейса. Не могли бы вы сообщить мне, есть ли у вас какое-либо решение этой проблемы. После снятия отметки с параметра NonComVisibleBaseClass Thrown я также начал получать исключение нулевой ссылки. Я пытаюсь определить элементы управления Excel Addin в Excel 2019. Ранее мы использовали Excel 2016, и те же элементы управления были идентифицированы с помощью автоматизации пользовательского интерфейса, но после перехода на Excel 2019. теперь этот элемент управления выдает ошибку NonComVisibleBaseClass. - person pasupati; 22.01.2020

Я наткнулся на эту страницу после того, как столкнулся с той же проблемой. Хотя я не уверен, что это решение может помочь вам, оно помогло мне и, возможно, может быть полезно кому-то еще.

Мое приложение WPF должно было работать с повышенными привилегиями, и если я пытался запустить VS без повышенных привилегий, мои тесты ломались с вышеупомянутой ошибкой. Что я сделал, так это просто перезапустил VS в качестве администратора, и тесты начали работать.

Одна вещь, которую я заметил, заключалась в том, что когда я работал без повышенных привилегий, Window.Framework был «Win32», а Window.Items был пуст. После запуска VS в качестве администратора свойство Framework было «Wpf», и список Items был заполнен правильно. Я не знаю, что является реальной причиной проблемы здесь. Но это сработало для меня, и, возможно, это сработает для кого-то еще.

person Alan Corrêa da Silva    schedule 23.03.2018