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
