C# UI 自动化

4

我想要在C#中自动化GUI。这和浏览器自动化一样吗?我该如何开始UI自动化。


2
请重新措辞问题。 - Bobby
2
你是指UI动画吗?还是你想要实现UI测试自动化?请提供更多细节。 - Ash
可能是重复问题(但尚未完全回答):https://dev59.com/gXI-5IYBdhLWcg3wBjdR - Abel
7个回答

6

非常有趣,我不知道这个。有一些第三方测试工具可以允许使用Winforms进行一些UI自动化,其中之一是Ranorex(http://www.ranorex.com)。 - Tim Jarvis

4

2
为什么这更好呢?它不是已经死了吗?(我在0.21版之后没有看到任何更新) - Elad Katz
使用Microsoft的UI自动化库编写的测试非常冗长,使用White则不会。我认为它并没有过时,因为它可以满足99%的人的需求。没有必要为了让项目看起来活跃而进行代码更改... - Nat Ritmeyer
1
如果我的工作不是关于测试,而更多地是为了自动化目的连接到其他窗口,并且我的代码相当通用(我需要支持许多不同的应用程序),那么White就不是一个好选择,对吧?据我所了解,UIA更通用和冗长,而White使用更易于理解和阅读的语法,但不太适合创建通用代码。 - Elad Katz

2

FlaUI是一个很好的替代品,可以取代“White”库,它基于微软的本地UI自动化库。


1
FlaUI的开发者告诉我,他们甚至已经测试过该框架与DevExpress控件的兼容性。 - Apoorv

2
9年后,Appium是一个不错的选择,也是Microsoft的参考网站,因为CodedUI已经过时。Microsoft为Appium建立了WinAppDriver。您也可以只使用WinAppDriver来测试您的GUI。如果您想进行持续集成,那么您需要使用Appium。 区别:
Teststack.White是一个高效的测试框架。它不需要像WinAppDriver(Appium)那样花费很多时间来执行测试,并且非常容易在您的测试项目中实现。但是其支持性不如WinAppDriver好。例如,Teststack.White仍不支持UWP(也许没有人想要开发UWP :P)。另一方面,您需要Windows 10或Windows Server 2016才能使用WinAppDriver。两者都有易于实现的测试方法,但您需要设置一些JSON值才能与WinAppDriver建立HTTP连接。
最后,WinAppDriver与Appium具有更多的可能性,但TestStack.White易于实现。

它能用来测试第三方控件,比如DevExpress Grid吗? - Apoorv
很抱歉回复晚了。这应该是可能的,你可以尝试一下。 - Björn Ammon
是的。它起作用了。需要启用一些设置以完全控制自动化。DevExpress支持也会在其中提供帮助。 - Apoorv
很高兴听到这个消息并了解到它。谢谢你提供的信息。 - Björn Ammon

2

WiPFlash是一个很好的、易于使用的、开源的UI自动化库,它基于微软的UI自动化库进行了封装。但是,它们受到底层的微软自动化结构的限制。


1

如果你的GUI使用了任何第三方Windows控件,比如Devexpress控件或Telerik控件,请小心。

MS UI Automation会很难定位那些花哨的网格、可爱的菜单和漂亮的图标。

说到TestStack.White,它使用MS UI Automation作为基石,因此它将面临同样的问题,无法定位详细的GUI元素。

当你需要按行操作网格时,你会知道UI Automation或TestStack.White最多只能返回表格对象,然后你会发现在项目开始之前的研发努力都是白费的。这就是我学到的教训,但现在我是专家。


你好,我的WPF应用程序正在使用DevExpress控件。您建议使用哪个工具进行UI自动化? - Apoorv
以网格为例,我们在应用程序(Devexpress方面)中开发了一个额外的辅助函数,它: 1.返回列名 2.按(列名、值)选择行通过这样做,我们弥合了自动化测试需求和MS UI Automation能力之间的差距。我们对其他复杂控件也采取了同样的方法,比如树形结构、图形选项卡、图标条等。测试脚本调用“helper”函数的方式,我们使用了COM。显然,对于Winform程序或WPM程序,COM是进行进程间通信的更简单的方法。 - Richard
可以分享一下你做的POC吗?我在这里仍然觉得很难做这些事情。 - Apoorv
已经换了工作,很抱歉我想帮忙但不能。 - Richard
如果它是最近的,那么他们是否会最终…… - Richard
显示剩余4条评论

0

可以使用http://msdn.microsoft.com/en-us/library/ms747327.aspx,就像Alastair Pitts所指出的那样。据我所知,只要Windows将您的应用程序使用的控件识别为标准控件或具有自动化支持的控件,它就适用于任何自动化任务。这应该适用于几乎所有主要的控件供应商。绝对包括MFC、Win32、WinForms,可能还有WPF和Silverlight。

您可以通过启动Spy++并查看其显示内容来了解您正在处理的内容。

您可能还想听听其他想法,例如使用White(开源)或Rannorex(商业工具)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接