我并不完全熟悉Visual Studio 2010(Ultimate)附带的测试套件,但我正在尝试使用Coded UI Tests 找到一种类似于Selenium Grid的方法.我希望能够将代理部署到Azure或EC2,执行所有编码的UI测试,然后将其拆除以进行冒烟测试,作为部署过程的一部分.
从我在网络上看到的情况来看,可以通过控制器和代理执行类似的操作,但我不确定其中有多少可以轻松迁移到云端.我发现了这些帖子:使用在Windows Azure上运行的代理进行负载测试:[ 1 2 3 ]但它们围绕负载测试.我的理解是负载测试可以编译并且易于部署,但对于Coded UI测试来说并不一定如此.
automated-tests selenium-grid smoke-testing visual-studio-2010 coded-ui-tests
我们有一个Silverlight解决方案,在我们的旧计算机上运行良好.它是为编码的UI测试设置的,因此项目引用了Microsoft.VisualStudio.TestTools.UITest.Extension.SilverlightUIAutomationHelper.
然后我们得到了新的机器,显然有一些模糊的配置,我们没有在新机器上正确设置,因为现在引用显示一个警告图标,错误列表窗口显示以下警告:
无法找到引用的组件"Microsoft.VisualStudio.TestTools.UITest.Extension.SilverlightUIAutomationHelper".
我发现这篇文章提供了预期找到此DLL的路径,但该目录不存在.在我的32位开发虚拟机上,我有一个C:\ Program Files\Common Files\microsoft shared\VSTT\10.0目录,但它没有UITestExtensionPackages子目录.
我错过了什么?我该如何安装这个DLL?
Visual Studio中的Coded UI Test Builder应用程序在编写编码UI测试时非常有用.它有一个"检查器"类型工具,显示所选控件的属性,这使得搜索控件非常简单.
目前,我能够启动此工具的唯一方法是通过"添加新的编码UI测试"向导.这很好,但它
有没有人建议如何在不添加新的Coded UI测试的情况下启动该工具?有关使用手写的编码UI测试检查控件的任何其他建议吗?如果它有任何不同,我在WPF工作.
当我记录这个序列时,它失败了.我知道我可以使用Keyboard.SendKeys(控件,"A",ModifierKeys.Control)发送Control + A但是如何发送一个包含控件的序列并在按下一个字母之前释放该字母.
注意:我正在寻找的序列类似于用于注释掉Control + K + C行的默认Visual Studio快捷方式
这可能是我需要使用WinApi的东西吗?
我正在尝试获取WinTable对象并将其转换为其本机对象类型:
CustomControl control = (CustomControl) this.UIMap.UIMainWindow.UICustomControl.NativeElement;
Run Code Online (Sandbox Code Playgroud)
然后我想像CustomControl我在程序的源代码中那样处理结果control.DoAThing(),我已经引用了包含CustomControl类的.dll 但问题.NativeElement;是返回一个类型Object[]而不是Object像函数的定义那样说它应该.
是.NativeElement走的路还是我误解了它的目的?
更新:我检查了结果中对象的类型,Object[]第一个是类型System.__ComObject,第二个是System.Int32但是我不确定这些代表什么...
我创建了一个小型WPF应用程序(仅用于探索Coded UI测试的工作原理).我的应用程序包含一个ItemsControl,但Coded UI Test Builder UIMap找不到合适的控件.
XAML:
<ItemsControl ItemsSource="{Binding Path=Customers, Mode=OneTime}"
AutomationProperties.AutomationId="CustomersItemsControl">
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBlock AutomationProperties.AutomationId="{Binding Path=Id, StringFormat='Customer_{0}', Mode=OneWay}"
Margin="5">
<TextBlock.Text>
<MultiBinding StringFormat="{}{1}, {0}">
<Binding Path="FirstName" />
<Binding Path="LastName" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是,即使WPF有ItemsControlAutomationPeer,编码的UI测试生成器也无法找到要添加到UIMap的控件.我解决它的唯一方法是获取根AutomationElement,然后使用TreeWalker.ControlViewWalker(我使用了本答案中的代码),但是该解决方案不允许我访问控件本身,只是AutomationElement.理想情况下,由于控制器有一个AutomationPeer,我想知道是否有更好的方法来获得此控件(即使无法获得UIMap).
另外,附注.我已经理解Visual Studio TextBlock在进行Coded UI测试时会忽略s,因为可以生成这么多.现在我更关心ItemsControl自己,而不是TextBlock从内部产生的个体.
我们正在研究编码的UI,因为我们有C#编码经验,所以我们将自己编写自动化测试代码.
我已经知道有一个测试用例可以定义测试步骤.每个测试步骤实际上是测试方法中的一个函数,描述来自摘要.
对于c#编码人员来说,这是一个很好的方式,可以向使用MTM(Microsoft测试管理器)与这些自动化测试进行交互的非编码测试人员展示他们正在做的事情.
但是,如果C#编码器能够创建通用功能作为"共享步骤",那将是非常棒的,并且通过这种方式,非技术测试人员能够使用这些构建块在MTM中组装新测试.
功能如:打开设置对话框,最大化窗口,添加项目(带参数),关闭所有打开的选项卡等.
然而,这些将是编码功能,而不是记录.
我们的想法是,一旦这些功能被创建并存储在TFS中(再次作为共享步骤),测试人员就可以使用这些功能作为更自动化测试的构建块.
我还必须强调这些功能将完全自动化,因此在MTM中组装的新测试也需要完全自动化,而无需打开Visual Studio.
这是可能吗?
我在Visual Studio 2017中打开了我们的解决方案,但找不到一些测试参考,具体来说:
在VS2015下打开它们加载正常,我可以看到Visual Studio 2015文件夹结构"Microsoft Visual Studio 14.0\Common7\IDE\PublicAssemblies \"下的引用.
但是它们不会出现在2017年安装的文件下:"\ Microsoft Visual Studio\2017\Enterprise\Common7\IDE\PublicAssemblies \".
如何让VS获取这些引用,我是否错过了插件或扩展?它们是否已合并或弃用?
Microsoft Visual Studio Enterprise 2017版本15.0.26228.4 D15RTWSVC
Microsoft .NET Framework版本4.6.01055
我一直在使用VS2010的Coded UI Test(CUIT)功能.
录制CodedUI框架时会生成许多分层类.
我想知道(手工编写)CUIT是否会减少创建的代码,是否会像生成的代码一样优化(在搜索元素中)?
还有哪些情况可以手动编码CUIT?
我一直在尝试将泛型引入我们的自动化代码,所以我试图将WpfControl转换为泛型类型T,其中T被约束为WpfControl类型.
return control as T;
Run Code Online (Sandbox Code Playgroud)
T将始终是WpfControl的子代,但是当我将类型为WpfControl的控件转换为泛型类型时,它返回null.我还尝试将控制转换为确切的子类型,例如:
var childControl = control as WpfTabList;
Run Code Online (Sandbox Code Playgroud)
这仍然会回来null.有人遇到过类似的问题吗?
请参阅此WpfControl类
coded-ui-tests ×10
c# ×4
.net ×1
.net-4.0 ×1
automation ×1
mstest ×1
silverlight ×1
unit-testing ×1
winapi ×1
wpf ×1