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上。

原创文章,作者:LFONB,如若转载,请注明出处:https://www.506064.com/n/349288.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
LFONBLFONB
上一篇 2025-02-14 17:47
下一篇 2025-02-15 17:09

相关推荐

  • Python应用程序的全面指南

    Python是一种功能强大而简单易学的编程语言,适用于多种应用场景。本篇文章将从多个方面介绍Python如何应用于开发应用程序。 一、Web应用程序 目前,基于Python的Web…

    编程 2025-04-29
  • Python zscore函数全面解析

    本文将介绍什么是zscore函数,它在数据分析中的作用以及如何使用Python实现zscore函数,为读者提供全面的指导。 一、zscore函数的概念 zscore函数是一种用于标…

    编程 2025-04-29
  • 全面解读数据属性r/w

    数据属性r/w是指数据属性的可读/可写性,它在程序设计中扮演着非常重要的角色。下面我们从多个方面对数据属性r/w进行详细的阐述。 一、r/w的概念 数据属性r/w即指数据属性的可读…

    编程 2025-04-29
  • Python计算机程序代码全面介绍

    本文将从多个方面对Python计算机程序代码进行详细介绍,包括基础语法、数据类型、控制语句、函数、模块及面向对象编程等。 一、基础语法 Python是一种解释型、面向对象、动态数据…

    编程 2025-04-29
  • Matlab二值图像全面解析

    本文将全面介绍Matlab二值图像的相关知识,包括二值图像的基本原理、如何对二值图像进行处理、如何从二值图像中提取信息等等。通过本文的学习,你将能够掌握Matlab二值图像的基本操…

    编程 2025-04-28
  • 疯狂Python讲义的全面掌握与实践

    本文将从多个方面对疯狂Python讲义进行详细的阐述,帮助读者全面了解Python编程,掌握疯狂Python讲义的实现方法。 一、Python基础语法 Python基础语法是学习P…

    编程 2025-04-28
  • 全面解析Python中的Variable

    Variable是Python中常见的一个概念,是我们在编程中经常用到的一个变量类型。Python是一门强类型语言,即每个变量都有一个对应的类型,不能无限制地进行类型间转换。在本篇…

    编程 2025-04-28
  • Zookeeper ACL 用户 anyone 全面解析

    本文将从以下几个方面对Zookeeper ACL中的用户anyone进行全面的解析,并为读者提供相关的示例代码。 一、anyone 的作用是什么? 在Zookeeper中,anyo…

    编程 2025-04-28
  • Python合集符号全面解析

    Python是一门非常流行的编程语言,在其语法中有一些特殊的符号被称作合集符号,这些符号在Python中起到非常重要的作用。本文将从多个方面对Python合集符号进行详细阐述,帮助…

    编程 2025-04-28
  • Switchlight的全面解析

    Switchlight是一个高效的轻量级Web框架,为开发者提供了简单易用的API和丰富的工具,可以快速构建Web应用程序。在本文中,我们将从多个方面阐述Switchlight的特…

    编程 2025-04-28

发表回复

登录后才能评论