Использование закодированного пользовательского интерфейса для имитации операции перетаскивания файлов

У меня есть приложение WinForm, которое является целью для файлов и папок. Я хотел бы использовать закодированный пользовательский интерфейс, чтобы иметь автоматизированные тесты, которые проверяют, что приложение делает то, что, по моему мнению, оно должно делать, когда на него были переброшены файлы.

Я использовал средство записи закодированного пользовательского интерфейса для записи этой операции, но мне нужно обобщить ее и заставить работать на сервере CI. Поэтому я в основном хочу запустить тест с некоторыми предварительно настроенными путями к файлам (файлы могут быть созданы как часть настройки теста), а затем просто вызвать событие удаления, передавая пути к этим файлам в файловой системе.

Закодированный пользовательский интерфейс записывает тест, но создает такой тест:

WinListItem uIContactcshtmlListItem = this.UIProgramManagerWindow.UIDesktopList.UIContactcshtmlListItem;
WinText uIDragDropFilesHereText = this.UIMyApp.UIDragDropFilesHereWindow.UIDragDropFilesHereText;
uIDragDropFilesHereText.EnsureClickable(new Point(84, 13));
Mouse.StartDragging(uIContactcshtmlListItem, new Point(17, 35));
Mouse.StopDragging(uIDragDropFilesHereText, new Point(84, 13));

«uIContactcshtmlListItem», по-видимому, представляет исходные файлы, которые я удалил. (Файл contact.cs оказался одной из вещей, которые я перетаскивал во время записи.) Я хочу заменить его только некоторыми путями к файлам, но, по сути, это элемент управления типа списка из проводника.

Есть ли способ выполнить то, что я хочу? Возможно, создав WinListItem в коде вручную?


person RMD    schedule 15.01.2014    source источник


Ответы (2)


Вот как я бы это сделал (требуется некоторое кодирование):

Запись открываем проводником виндовс, пишем в адресной строке и нажимаем энтер. Затем запишите перетаскивание файла в ваше приложение (перетащите его за значок, чтобы избежать разочарований в будущем). Добавьте свои утверждения. Запись закрытия проводника Windows. Это должно быть четыре метода плюс утверждения: открыть проводник, установить адрес, перетащить файл, закрыть проводник.

Теперь у вас есть базовые методы. Сначала вызовите метод, который открывает проводник, а затем прокручивайте пути к входным файлам. В цикле: установите параметры для методов «установить адрес» и «перетащить файлы» для файла (вы можете проверить текущий каталог в проводнике и вызвать «установить адрес» только при необходимости) и свойство поиска имени для ListItem UIControl (элемент управления/файл, который вы хотите перетащить). Вызовите Find() для UIControl ListItem/Image или установите AlwaysSearch для этого элемента управления в UIMap (вам это нужно, потому что здесь мы повторно используем UIControl, кэшированный в предыдущем объекте), затем вызовите метод «перетаскивания файла». Тогда проверьте свои утверждения.

Наконец, вызовите метод «закрыть проводник». Вам, вероятно, придется немного подправить UIMap, чтобы все работало правильно (изменить свойства поиска и прочее).

Конечно, это не единственный способ сделать это, и не лучший, но может быть хорошим началом.

person kida    schedule 16.01.2014

Изменить параметр поиска

WinListItem uIContactcshtmlListItem = this.UIProgramManagerWindow.UIDesktopList.UIContactcshtmlListItem;

WinText uIDragDropFilesHereText = this.UIMyApp.UIDragDropFilesHereWindow.UIDragDropFilesHereText;

uIContactcshtmlListItem.SearchProperties.Remove(UITestControl.PropertyNames.Name);
uIContactcshtmlListItem.SearchProperties.Add("Name", "ItemName" or variable);
or uIContactcshtmlListItem.SearchProperties.Add("Name", "PartOfTheName", PropertyExpressionOperator.Contains);


uIDragDropFilesHereText.EnsureClickable(new Point(84, 13));

Mouse.StartDragging(uIContactcshtmlListItem, new Point(17, 35));
Mouse.StopDragging(uIDragDropFilesHereText, new Point(84, 13));
person Mordacaj    schedule 26.09.2014