1. 程式人生 > 其它 >C#中使用FlaUI進行Windows應用程式自動化及自動測試

C#中使用FlaUI進行Windows應用程式自動化及自動測試

FlaUI 是Roemer 開發的自動化框架,前身是TestStack.White,為了提供一個非常乾淨和現代的程式碼庫,重新寫了FlaUI以便於輕鬆進行協作和進一步開發。

FlaUI是一個.NET庫,可幫助自動測試Windows應用程式(Win32,WinForms,WPF,Store Apps等)。它基於Microsoft的本機UI自動化庫,因此是圍繞它們的包裝。FlaUI幾乎包裝了UI自動化庫中的所有內容,還提供了本機物件,以防萬一有人有特殊需求而FlaUI還沒有解決。

在此只是進行如何使用的介紹,達到拋磚引玉的效果。

FlaUI的安裝:
在Visual Studio中建立一個新專案
右鍵單擊專案,然後選擇“管理NuGet軟體包”(使用NuGet軟體包管理器)
選擇“瀏覽”選項卡並搜尋FlaUI,它將顯示FlaUI庫。
從NuGet軟體包管理器安裝以下庫 FLAui.core,Flaui.uia2,Flaui.uia3。
當然下載的庫僅限於此專案,並非對所有專案都有用。

如何使用FlaUI啟動應用程式:
要開始測試,應從FlaUI.Core庫中提供的“ Application”類中實現靜態方法“ Launch”。
應將應用程式路徑(已安裝在計算機中且要自動化的應用程式)作為引數傳遞給Launch方法,如以下示例所示。
var application = Application.Launch(@"C:\Program\FilesMicrosoft Office\Office16\WINWORD.EXE");//這裡的字串是要進行自動化測試的軟體路徑,通過launch啟動軟體
var automation = new UIA3Automation();//指定用於自動化庫型別UIA3
var mainWindow = application.GetMainWindow(automation);//應用程式例項來獲取主視窗例項。
在應用程式中搜索元素:
要在應用程式中查詢元素,我們需要指定AutomationElement的TreeScope。
我們可以通過ConditionFactory,ControlType和要執行的操作(如以下示例中所述)類的條件來指定AutomationElement。
ConditionFactory cf = new ConditionFactory(new UIA3PropertyLibrary());
mainWindow.FindFirstDescendant(cf.ByName("Text Editor")).AsTextBox().Enter("FlaUI Tutorial");
第一行 建立“ ConditionFactory”例項,“ ConditionFactory”是“ FlaUI.Core”中的類,“ ConditionFactory”根據條件標識元素。

第二行 指定自動化元素 TreeScope 的FindFirstDescendant(),ConditionFactory 的ByName(),ControlType 的AsTextBox()和它的動作Enter()。

上面內容可以安裝FLaUI並執行指定應用程式,可以使用inspect工具或UISpy檢查元素。個人覺得inspect更好用些。前面兩者使用眾多,可以百度相關資料,還有Flauinspect 這個工具,其效果也不錯,在這裡簡單介紹下:

Flauinspect 有三種檢查元素的方法,開啟【Flauinspect】 轉到 【模式】

懸停模式(按Ctrl並將滑鼠指標移到目標元素上)
焦點追蹤()
顯示XPATH(與上面列出的任何模式結合使用),它將僅顯示絕對XPath。
使用FlaUI捕獲螢幕截圖:
Flaui為螢幕截圖提供了“ Capture”類

Capture.screen();//捕獲全屏
Capture.Element("That Element ");//捕獲特定元素
Capture.Rectangle("Specify the height, width and length")
//捕獲在引數中指定的特徵塊
可以使用以下程式碼行將螢幕快照儲存在檔案中:

var image = Capture.Screen();
image.ApplyOverlays(new MouseOverlay(image.DesktopBounds));
image.ToFile(@"c:\tempscreen.png");
ToFile(“ 路徑\檔名”)方法可用於將螢幕快照儲存在使用者指定的位置。

使用FlaUI執行滑鼠動作
Flaui為Mouse類提供了以下不同方法:

1. 滑鼠左鍵單擊

Mouse.LeftClick();
//左鍵單擊當前指向的滑鼠指標。
2. 滑鼠位置

Point point = new Point(2435, 234 )
//滑鼠指標的位置x:2435,y:234
3. 滑鼠中鍵

Mouse.Click(MouseButton.Middle, point);
4. MoveTo 、MoveBy 及位置

Mouse.MoveTo(point)
// 滑鼠指標定位到point這個點
Mouse.MoveBy(point)
// 將滑鼠拖動到指定的位置。
Mouse.Position(point)
// 滑鼠指標的軌跡不會顯示。
5. 滾動

Mouse.Scroll(10)
Mouse.HorizontalScroll(40);
Mouse.VerticalScroll(30);
// 正值向上滾動; 負值向下滾動
使用FlaUI執行鍵盤操作
為了通過鍵盤執行應用程式的任何操作,FlaUI為Keyboard類提供了以下方法:

Keyboard.Type("Hello Flaui"); // 鍵盤輸入字串
Keyboard.Type(VirtualKeyShort.Key_B, VirtualKeyShort.Key_C);
//鍵入B後鍵入C
Keyboard.Press(VirtualKeyShort.BACK) // 鍵入backspace鍵

//用於多個組合鍵 (按下某個鍵、釋放某個鍵 )
Keyboard.Pressing(VirtualKeyShort.CONTROL);
Keyboard.Press(VirtualKeyShort.Key_A);
Keyboard.Release(VirtualKeyShort.CONTROL);

//組合鍵的另一種方式
Keyboard.TypeSimultaneously(VirtualKeyShort.CONTROL,VirtualKeyShort.KEY_A);
VirtualKeyShort在“ FlaUI.Core.WindowsAPI”包中。

如何在FlaUI中突出顯示元素:
Flaui提供了“ DrawHighlight”方法,該方法將突出顯示AutomationElement。

Automation_Element.DrawHighlight();
簡單的方法示例,如想深入瞭解可以檢視Roemer原始碼https://github.com/FlaUI/FlaUI。
————————————————
版權宣告:本文為CSDN博主「levitate」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處連結及本宣告。
原文連結:https://blog.csdn.net/levitate/article/details/108881189