使用编码的UI模拟文件拖放操作

时间:2014-01-15 23:37:18

标签: c# testing coded-ui-tests

我有一个WinForm应用程序,它是文件和文件夹的放置目标。我想使用Coded UI进行自动化测试,以验证应用程序执行我认为在文件被删除时应该做的事情。

我使用Coded UI记录器来记录此操作,但我需要对其进行概括并使其在CI服务器上运行。所以我基本上想要使用一些预先设置的文件路径来初始化测试(文件可以作为测试设置的一部分创建),然后只是触发drop事件传递到文件系统上的那些文件的路径。

编码的UI记录测试,但产生如下测试:

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”似乎代表我删除的源文件。 (contacts.cs文件恰好是我在录制期间拖放的东西之一。)我想用一些文件路径替换它,但这似乎基本上是资源管理器中的列表项类型控件。

有没有办法实现我想要的?也许通过手动在代码中创建WinListItem?

2 个答案:

答案 0 :(得分:0)

我就是这样做的(需要一些编码):

记录打开Windows资源管理器,在地址栏中写入并按Enter键。然后记录将文件拖动到您的应用程序(拖动它的图标以避免将来的挫折)。添加你的断言。记录关闭Windows资源管理器。这些应该是四个方法加上断言:打开资源管理器,设置地址,拖动文件,关闭资源管理器。

现在你有了基本方法。首先调用打开资源管理器的方法,然后通过输入文件路径循环。在循环中:设置'设置地址'的参数。并且'拖动文件'文件的方法(您可以检查资源管理器中的当前目录,只调用'设置地址'如果需要)和ListItem UIControl的名称搜索属性(您要拖动的控件/文件)。在ListItem / Image UIControl上调用Find()或在UIMap中为此控件设置AlwaysSearch(你需要这个,因为我们在这里重新使用缓存在前一个对象上的UIControl)然后调用'拖动文件'方法。然后检查你的断言。

最后打电话给关闭资源管理器'方法。您可能需要在UIMap中稍微调整一下才能使事情正常工作(更改搜索属性和内容)。

当然,这不是唯一的方法,不是最好的方式,但可能是一个良好的开端。

答案 1 :(得分:0)

更改搜索参数

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));