TestComplete教程:光學(xué)字符識別(一)處理UI元素
TestComplete是一款具有人工智能的自動UI測試工具,利用自動化測試工具和人工智能支持的混合對象識別引擎,輕松檢測和測試每個桌面,Web和移動應(yīng)用程序。使用TestComplete,可以提高測試覆蓋率并幫助提供經(jīng)過實戰(zhàn)考驗的高質(zhì)量軟件。本文描述了如何在自動化測試中使用光學(xué)字符識別來處理TestComplete無法以常規(guī)方式識別的UI元素。
通常,TestComplete通過其屬性(例如,通過其類名、標(biāo)題、ID等)識別窗口和控件。但是,在某些情況下,TestComplete無法訪問已測試應(yīng)用程序中控件或窗口的屬性。例如,如果TestComplete不支持該控件,或者所需的控件是直接在屏幕上呈現(xiàn)的圖形元素(例如,位圖或圖表),則會發(fā)生這種情況。
要測試此類窗口和控件,您可以命令TestComplete捕獲其文本內(nèi)容。為此,TestComplete使用光學(xué)字符識別(OCR)。它將渲染的文本圖像轉(zhuǎn)換為計算機(jī)可讀字符,并與包含所需文本的區(qū)域配合使用。與使用基于坐標(biāo)的鼠標(biāo)單擊的測試相比,這可以幫助您擁有更穩(wěn)定,更靈活的測試。
影片教學(xué)
何時使用光學(xué)字符識別
您可以使用光學(xué)字符識別:
獲取測試應(yīng)用程序的文本內(nèi)容或特定的UI元素,以驗證測試應(yīng)用程序的數(shù)據(jù)或狀態(tài)。
通過文本內(nèi)容在經(jīng)過測試的應(yīng)用程序中找到所需的UI元素,并在其上模擬用戶操作。
要求
您的TestComplete版本必須為12.60或更高版本。
您需要有效的許可證才能使用TestComplete智能質(zhì)量插件。
必須在TestComplete中啟用“智能質(zhì)量”插件。
您可以在TestComplete安裝期間啟用插件。如果您在安裝過程中未啟用插件,則可以在以后隨時通過“文件”>“安裝擴(kuò)展名”對話框來執(zhí)行此操作。為此,請從TestComplete主菜單中選擇文件>安裝擴(kuò)展,然后在出現(xiàn)的對話框中啟用Intelligent Quality> Intelligent Quality Core插件。
必須在TestComplete中啟用光學(xué)字符識別支持。
默認(rèn)情況下,如果在TestComplete安裝過程中啟用了Intelligent Quality插件,則會自動啟用它。如果您在測試中遇到光學(xué)字符識別問題,請從TestComplete主菜單中選擇“文件”>“安裝擴(kuò)展名”,并確保啟用了“光學(xué)字符識別”插件(您可以在“Intelligent Quality”組中找到它)。如果插件被禁用,請啟用它。在啟用插件時TestComplete顯示的確認(rèn)消息中,單擊鏈接以閱讀第三方許可協(xié)議。如果您同意許可條款,請點擊“啟用OCR”。
此外,請確保沒有安裝和啟用舊版OCR插件。您可以在“通用”組中找到該插件。
您的計算機(jī)必須有權(quán)訪問ocr.api.dev.smartbear.com Web服務(wù)。如果您的網(wǎng)絡(luò)中運行著防火墻或代理,則它們應(yīng)允許您的計算機(jī)訪問Web服務(wù)。
您的防火墻必須允許通過端口443的通信。
有關(guān)必須滿足的要求以及如何配置測試環(huán)境的詳細(xì)信息,請參閱光學(xué)字符識別-要求(后面更新)。
它是如何工作的
TestComplete可以識別您在屏幕上選擇的UI元素的文本以及從屏幕捕獲或從文件加載的圖像中的文本。TestComplete將要識別的數(shù)據(jù)發(fā)送到SmartBear 的ocr.api.dev.smartbear.com Web服務(wù)。此網(wǎng)絡(luò)服務(wù)將傳入的請求轉(zhuǎn)發(fā)到Google Vision API,并將識別結(jié)果傳輸回TestComplete。
在測試中,您可以訪問整個識別的文本或其中的單個文本塊(如果有多個)。如果識別的文本屬于UI元素,則可以命令TestComplete通過其文本在屏幕上定位該元素,并模擬對其進(jìn)行的各種操作,例如單擊或觸摸。
安全
為了識別文本,TestComplete使用ocr.api.dev.smartbear.com服務(wù),而該服務(wù)又使用Google Vision API。識別和識別結(jié)果的數(shù)據(jù)通過HTTPS發(fā)送到服務(wù),即連接是安全的,數(shù)據(jù)是加密的。SmartBear既不存儲也不與其他任何第三方共享發(fā)送的數(shù)據(jù)。
創(chuàng)建基于OCR的測試
自動地
創(chuàng)建測試的最簡單方法是記錄它:
開始錄制之前
從TestComplete主菜單中選擇“工具”>“選項”,然后啟用“引擎”>“錄制”>“使用OCR選項錄制不受支持的控件”。TestComplete將在錄制過程中通過其文本自動識別不受支持的控件,并將在包含此文本的屏幕區(qū)域上記錄您的操作。
如果關(guān)閉該選項,則TestComplete將記錄基于坐標(biāo)的動作(如果您使用的是非儀表Android應(yīng)用程序,則將記錄基于圖像的動作)。
記錄
在錄制過程中,TestComplete自動檢測與之交互的窗口和控件。如果TestComplete支持某個窗口或控件,則后者會記錄特定于該窗口或控件的測試命令。如果不支持窗口或控件,則TestComplete將為其記錄基于坐標(biāo)的鼠標(biāo)操作和鍵盤事件。OCR引擎可幫助您記錄不受支持的控件的基于對象的命令,并使記錄的測試更獨立于屏幕坐標(biāo),即更穩(wěn)定。
下圖顯示了使用光學(xué)字符識別的已記錄測試的示例:
手動地
準(zhǔn)備應(yīng)用程序以進(jìn)行測試。您執(zhí)行此操作的方式取決于應(yīng)用程序類型。
對于移動應(yīng)用程序:將TestComplete連接到您的移動設(shè)備。要了解如何執(zhí)行此操作,請參閱準(zhǔn)備iOS設(shè)備或?qū)estComplete連接到Android設(shè)備(取決于您的設(shè)備類型)。打開“ 移動屏幕”窗口。
啟動經(jīng)過測試的應(yīng)用程序。
在您的應(yīng)用程序中,找到要使用光學(xué)字符識別來識別文本的區(qū)域。
在測試中,添加將識別文本的命令,對其進(jìn)行驗證或使用它在屏幕上查找被測試的對象:
在關(guān)鍵字測試中
要識別屏幕對象的文本內(nèi)容并檢查其是否正確,請使用OCR Checkpoint操作。要通過控件的文本內(nèi)容(或周圍的文本)定位控件并模擬控件上的用戶操作,請使用OCR操作操作。
下圖顯示了一個示例關(guān)鍵字測試,該測試適用于使用OCR的應(yīng)用程序:
腳本
使用OCR.Recognize腳本測試中的方法來識別屏幕上呈現(xiàn)的文本。該方法將返回一個對象,該對象提供對包含已識別文本的區(qū)域的訪問:
要獲取所有可識別的文本,請使用OCR.Recognize.FullText屬性。
要訪問識別文本的各個片段(塊),請使用OCR.Recognize.Block屬性或OCR.Recognize.BlockByText方法。
若要驗證測試的應(yīng)用程序包含指定的文本,請使用OCR.Recognize.CheckText方法。
要在識別的文本的單個片段(塊)上模擬用戶操作,請使用OCR.Recognize.Block和OCR.RecoginzeBlockByText對象提供的方法。例如,Click或HoverMouse方法。
為了模擬在其旁邊是一個片段(塊)的區(qū)域的用戶操作,使用ClickNextTo,TouchNextTo以及SendKeys該方法OCR.Recognize.Block和OCR.RecoginzeBlockByText對象提供。
例如:
通過文本內(nèi)容尋址對象
在關(guān)鍵字測試中,您可以使用OCR Action操作查找包含所需文本的指定屏幕對象的區(qū)域,并在其上模擬用戶操作:
在腳本測試中,要使用其文本訪問對象,請使用OCR.Recognize.Block或OCR.Recognize.BlockByText方法。該方法識別屏幕上對象的文本,并通過其在其他已識別文本部分之間的索引或其內(nèi)容來提供對已識別文本的單個部分的訪問。
JavaScript, JScript | OCR.Recognize(Aliases.myApp.mainForm).BlockByText("*Help*") |
Python | OCR.Recognize(Aliases.myApp.mainForm).BlockByText("*Help*") |
VBScript | OCR.Recognize(Aliases.myApp.mainForm).BlockByText("*Help*") |
DelphiScript | OCR.Recognize(Aliases.myApp.mainForm).BlockByText('*Help*') |
C#Script | OCR["Recognize"](Aliases["myApp"]["mainForm"])["BlockByText"]("*Help*") |
本文內(nèi)容到這里就結(jié)束啦,感興趣的朋友請繼續(xù)關(guān)注我們~您也可以下載TestComplete試用版嘗試一下~
想要購買TestComplete正版授權(quán),或了解更多產(chǎn)品信息請點擊“咨詢在線客服”