Можно ли читать данные из типа элемента управления 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.