您的位置:

UIAutomation被放弃——一个全面深入的分析

一、UIAutomation是什么

UIAutomation是一个自动化测试工具,最初由微软公司在2005年发布。它能够对桌面和Windows Store应用进行UI自动化测试。开发人员可以使用UIAutomation来模拟鼠标、键盘操作,读取和编辑窗口中的内容,以及与应用程序中的控件进行交互。UIAutomation是一种实现无需访问应用程序源代码或二进制代码的用例编写工具。

二、UIAutomation的优缺点

优点

1.自动测试:UIAutomation优秀的自动化测试功能,为测试人员提供了很大的帮助。可以帮助测试人员快速执行复杂的UI测试并检测出潜在的缺陷。

2.跨应用程序:UIAutomation功能强大,在跨应用程序方面表现出色,可以支持的应用程序类型非常多。测试人员只需要编写一次测试脚本,然后可以在多个应用程序之间共享脚本。

3.简单易用:UIAutomation易于使用,可以轻松定位并操作各种UI元素。可以帮助开发人员快速编写测试脚本,并在测试和开发过程中提供快速反馈。

缺点

1.UIAutomation需要配置与应用程序交互的元素和对象的各种属性。条件是这些元素和对象必须是公共可访问的。如果开发者没有设置这些属性,测试人员就无法测试应用程序。

2.UIAutomation的测试结果不可靠。有时测试人员会发现测试结果不稳定、容易出错。这可能是由于测试程序与应用程序之间的通信不稳定、UIAutomation的版本过旧等原因造成的。

3.UIAutomation不支持Android和IOS平台,也不支持Web应用程序。

三、为什么UIAutomation被放弃

1.Microsoft Touch-centric操作系统发布

自Windows 8开始,Microsoft逐渐推出Touch-centric操作系统,并开始强调应用程序的“轻便和现代感”,并且Windows应用商店也越来越丰富。为了解决这些更改和需求,Microsoft提出了一种新的UI自动化框架,称为WinAppDriver。WinAppDriver是一个用于自动化Windows应用程序的开源UI自动化框架,支持多种编程语言和测试框架。这样一来,UIAutomation的地位变得不再那么重要。

2.UIA3的发布

UIA3是UIAutomation的最新版本,它实现了对Microsoft WPF和Windows Forms的支持,以及对Windows 10 Universal app的改进。UIA3具有更高的性能和更好的稳定性,相比之下,UIAutomation的性能与稳定性都要逊色一些。由于Microsoft已经关闭了UIAutomation的开发和支持,将更多精力放在了UIA3和WinAppDriver上,所以UIAutomation失去了它曾经的地位。

3.UIAutomation的局限性

除了在Microsoft Touch-centric操作系统和UIA3的发布方面,UIAutomation面临的另一个问题是它的局限性。虽然UIAutomation可以支持多种类型的应用程序,但它无法支持Web应用程序和Android/iOS平台应用程序。这导致测试人员不得不寻找其他UI自动化测试工具。

四、WinAppDriver与UIA3的示例代码

//WinAppDriver

DesiredCapabilities appCapabilities = new DesiredCapabilities();
appCapabilities.SetCapability("app", "Microsoft.MicrosoftEdge_8wekyb3d8bbwe!MicrosoftEdge");
WindowsDriver session = new WindowsDriver
   (new Uri("http://127.0.0.1:4723"), appCapabilities);
session.FindElementByName("Address and search bar").SendKeys("http://www.google.com" + Keys.Enter);

   
  
//UIA3
var desktop = AutomationElement.RootElement;
Condition condition = new PropertyCondition(AutomationElement.NameProperty, "Notepad");
var notepad = desktop.FindFirst(TreeScope.Children, condition);
var mainWindow = notepad.FindFirst(TreeScope.Children, new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.Window));
var menu = mainWindow.FindFirst(TreeScope.Descendants, new PropertyCondition(AutomationElement.NameProperty, "File")); 
var expandCollapsePattern = (ExpandCollapsePattern)menu.GetCurrentPattern(ExpandCollapsePattern.Pattern);
expandCollapsePattern.Expand();

五、总结

UIAutomation被放弃,WinAppDriver和UIA3逐渐替代了UIAutomation在自动化测试中的地位。WinAppDriver是一个用于自动化Windows应用程序的开源UI自动化框架。而UIA3实现了对Microsoft WPF和Windows Forms的支持,以及对Windows 10 Universal app的改进。虽然UIAutomation的自动化测试功能优秀,但也有一些缺点和局限性。Microsoft已经关闭了UIAutomation的开发和支持,将更多精力放在了UIA3和WinAppDriver上。