一、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"); WindowsDriversession = 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上。