Можно ли читать данные из типа элемента управления Pane?

Я начал использовать FlaUI для автоматизации своего.NET-приложения толстого клиента. Приложение основано на Windows Form. Начало было удачным, форма входа была идентифицирована, и я мог войти в систему, но после этого зашел в тупик, и я обнаружил, что почти все в приложении разработано как тип элемента управления Pane.

Итак, есть сетка, таблица и т. Д., Но все они просто отображаются как тип панели, когда я вижу иерархию объектов с помощью инструментов Inspect.exe или FLAUInspect. И в их собственности действительно ничего не появляется, поэтому кажется, что ничего нельзя прочитать. Но прежде чем сдаться, я просто хотел проверить с опытной аудиторией на этом форуме, действительно ли есть какой-либо способ получить данные из объектов Pane.

Пожалуйста, предложите, есть ли способ, даже если это означает использование других библиотек, таких как UIAutomation, TestStack.White и т. Д.

ОБНОВЛЕНИЕ: теперь я понимаю немного больше об этом. Таким образом, объекты, которые есть на панели, разрабатываются синхронно и devexpress. Можно ли идентифицировать объекты, разработанные в syncfusion и devexpress, с использованием FlaUI, UIAutomation или TestStack.White и т. Д.?

2 ответа

Я не знаю, пробовали ли вы уже следующие шаги. Вы добавляли идентификаторы автоматизации к своим объектам в коде xaml с помощью:

      AutomationProperties.AutomationId="AnyID"

В тестовом коде сначала инициализируйте главное окно приложения.

      MainWindow = fApplication.GetMainWindow(fAutomation, null)?.AsWindow()

После этого вы можете найти свои объекты по идентификатору автоматизации, например:

      MainWindow .FindFirstDescendant(cf => cf.ByAutomationId(AnyID))

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

Большинство UI-фреймворков в настоящее время полностью поддерживают UI Automation. Поэтому сначала убедитесь, что у вас установлена ​​последняя версия вашего фреймворка (syncfusion, devexpress). Кроме того, некоторые платформы предоставляют настройки для включения автоматизации пользовательского интерфейса. Как и для devexpress, вам нужно установить

      ClearAutomationEventsHelper.IsEnabled = false;

в начале вашего приложения для тестирования, чтобы он открывал гораздо больше вещей (например, вкладок) для FlaUI.

Другие вопросы по тегам