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/zh-tw/n/349288.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
LFONB的頭像LFONB
上一篇 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

發表回復

登錄後才能評論