翻譯|使用教程|編輯:龔雪|2019-12-04 09:23:43.943|閱讀 1481 次
概述:DevExpress Winforms Controls 內置140多個UI控件和庫,完美構建流暢、美觀且易于使用的應用程序,本教程主要為大家介紹如何實現UI自動化。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
DevExpress Winforms Controls 內置140多個UI控件和庫,完美構建流暢、美觀且易于使用的應用程序。無論是Office風格的界面,還是分析處理大批量的業務數據,DevExpress WinForms都能輕松勝任。DevExpress廣泛應用于ECM企業內容管理、 成本管控、進程監督、生產調度,在企業/政務信息化管理中占據一席重要之地。
【適用范圍】:各種桌面、Web應用程序開發,尤其是WinForms應用程序開發。
在針對Visual Studio 2019的發行說明中,Microsoft 宣布Coded UI測試的生命周期終止。
Microsoft建議將 一起用于測試桌面和UWP應用,此消息引起廣大用戶的興趣:DevExpress控件是否與Appium兼容?經過DevExpress團隊的反復測試,答案是肯定的!使用Appium創建自動UI測試的方法如下。
1. 跳轉到 然后下載兩個APP,
2. 在Windows中打開。
3. 以管理員身份運行WinAppDriver.exe并使其運行,請注意應用程序正在偵聽的地址,稍后您將需要它。
4. 打開您要測試的Visual Studio解決方案,或創建一個新的示例解決方案。
5. 將新的單元測試項目添加到解決方案。
6. 在Solution Explorer中右鍵單擊Unit Test project,然后選擇“Manage NuGet Packages…”,安裝最新的穩定Appium.WebDriver程序包。
7. 打開Unit Test項目的UnitTest1.cs文件,并添加兩個類:MainDemoSession(定義開始和結束測試會話的方法)和Helper(包含查找被測試的UI元素的方法),將步驟3中的地址用作WindowsApplicationDriverUrl值。
public class MainDemoSession{protected const string WindowsApplicationDriverUrl = "//127.0.0.1:4723";private const string ApplicationPath = @"C:\Users\...\AppiumTest.exe"; protected static WindowsDriver<WindowsElement> desktopSession; public static void Setup(TestContext context) { // Launch a new instance of the tested application if (desktopSession == null) { // Create a new session to launch the tested application AppiumOptions options = new AppiumOptions(); options.AddAdditionalCapability("app", ApplicationPath); desktopSession = new WindowsDriver<WindowsElement>( new Uri(WindowsApplicationDriverUrl), options); Assert.IsNotNull(desktopSession); Assert.IsNotNull(desktopSession.SessionId); // Set implicit timeout to 1.5 seconds //to make element search to retry every 500 ms //for at most three times desktopSession.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(1.5); } } public static void TearDown() { // Close the application and delete the session if (desktopSession != null) { desktopSession.Close(); desktopSession.Quit(); desktopSession = null; } } } public static class Helper { public static WindowsElement FindElementByAbsoluteXPath( this WindowsDriver<WindowsElement> desktopSession, string xPath, int nTryCount = 3) { WindowsElement uiTarget = null; while (nTryCount-- > 0) { try { uiTarget = desktopSession.FindElementByXPath(xPath); } catch { } if (uiTarget != null) { break; } else { System.Threading.Thread.Sleep(400); } } return uiTarget; } }
8. 修改自動生成的UnitTest1類,如下所示:
[TestClass]public class UnitTest1 : MainDemoSession{[TestMethod]public void TestMethod1(){//test start //test finish } [ClassInitialize] public static void ClassInitialize(TestContext context) { Setup(context); } [ClassCleanup] public static void ClassCleanup() { TearDown(); } }
9. 運行您的應用程序,并將其拖到主系統顯示屏上(如果您具有多屏幕設置)。
10. 啟動WinAppDriver UI Recorder然后點擊“Record”, 將鼠標懸停在要與之交互的第一個UI元素上,然后等待它開始閃爍藍色。Recorder的狀態欄會將其文本從“Active”更改為“XPath Ready”。
11. 當該元素閃爍時,recorder已準備就緒,您可以執行UI操作:單擊此元素、將其拖動、輸入新值等。完成此元素后,將鼠標懸停在另一個UI元素上,等待 recorder的確認并重復該過程。
12. 記錄了要重現的一系列步驟后,請在recorder中單擊“Pause”,您可以打開actions selector確保已記錄所有UI操作。
13. 單擊“Generate and copy C# code to Clipboard”按鈕來復制所有記錄的操作代碼,將此代碼粘貼到UnitTest1.TestMethod1方法中。 例如,下面的代碼選擇“Job”標簽。
[TestMethod] public void TestMethod1() { //test start // LeftClick on TabItem "Job" at (20,31) Console.WriteLine("LeftClick on TabItem \"Job\" at (20,31)"); string xpath_LeftClickTabItemJob_20_31 = "/Pane\[@ClassName=\"#32769\"\][@Name=\"Desktop 1\"]/Window\[starts-with(@AutomationId,\"XtraForm\")]/Pane[@Name=\"The XtraLayoutControl\"\][starts-with(@AutomationId,\"dataLayoutControl\")]/Table[@Name=\"Root\"]/Table[@Name=\"autoGeneratedGroup0\"]/Table[@Name=\"Root\"]/Table[@Name=\"Photo\"]/Table[@Name=\"FirstAndLastName\"]/Tab[@Name=\"Tabs\"]/TabItem[@Name=\"Job\"]"; var winElem_LeftClickTabItemJob_20_31 = desktopSession.FindElementByAbsoluteXPath(xpath_LeftClickTabItemJob_20_31); if (winElem_LeftClickTabItemJob_20_31 != null) { winElem_LeftClickTabItemJob_20_31.Click(); } else { Console.WriteLine($"Failed to find element using xpath: {xpath_LeftClickTabItemJob_20_31}"); return; } //test finish }
14. 在內部測試期間,自動生成的代碼可能無法通過其完整路徑找到UI元素:
/Pane\[@ClassName=\"#32769\"\][@Name=\"Desktop 1\"]/Window[starts-with…
如果發生這種情況,請縮短所有元素路徑,使其以“ / Window”開頭。
string xpath_LeftClickTabItemJob_20_31 = "/Window[starts-with(@AutomationId...";
此外,您可以使用Assert.Fail而不是Console.WriteLine來調試測試(如果找不到UI元素,則可以)。
Assert.Fail($"Failed to find element...");
15. 在Visual Studio中右鍵單擊Unit Test project,然后單擊“Run Tests”。測試將啟動您的應用程序,重復所有記錄的步驟,然后關閉應用程序。 所有測試操作都記錄在步驟3中啟動的WinAppDriver控制臺中。
您可以通過與Coded UI相同的方式啟動Appium測試,唯一的區別是您需要在測試執行計算機上運行WinAppDriver。
DevExpress中文網官網QQ群:540330292 歡迎一起進群討論
DevExpress 2019年度界面大賽火熱開啟!曬圖有獎,各大視頻VIP免費領取!
掃描下方二維碼,立即參與哦!
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:慧都網