• <menu id="w2i4a"></menu>
  • logo DevExpress WinForms使用教程

    文檔首頁(yè)>>DevExpress WinForms使用教程>>DevExpress Winforms使用技巧教程:UI自動(dòng)化——從CodedUI遷移至Appium

    DevExpress Winforms使用技巧教程:UI自動(dòng)化——從CodedUI遷移至Appium


    DevExpress Winforms Controls 內(nèi)置140多個(gè)UI控件和庫(kù),完美構(gòu)建流暢、美觀且易于使用的應(yīng)用程序。無(wú)論是Office風(fēng)格的界面,還是分析處理大批量的業(yè)務(wù)數(shù)據(jù),DevExpress WinForms都能輕松勝任。DevExpress廣泛應(yīng)用于ECM企業(yè)內(nèi)容管理、 成本管控、進(jìn)程監(jiān)督、生產(chǎn)調(diào)度,在企業(yè)/政務(wù)信息化管理中占據(jù)一席重要之地。

    【適用范圍】:各種桌面、Web應(yīng)用程序開(kāi)發(fā),尤其是WinForms應(yīng)用程序開(kāi)發(fā)。

    點(diǎn)擊獲取DevExpress v19.2完整版試用下載

    在針對(duì)Visual Studio 2019的發(fā)行說(shuō)明中,Microsoft 宣布Coded UI測(cè)試的生命周期終止。

    Microsoft建議將Appium with WinAppDriver 一起用于測(cè)試桌面和UWP應(yīng)用,此消息引起廣大用戶的興趣:DevExpress控件是否與Appium兼容?經(jīng)過(guò)DevExpress團(tuán)隊(duì)的反復(fù)測(cè)試,答案是肯定的!使用Appium創(chuàng)建自動(dòng)UI測(cè)試的方法如下。

    1. 跳轉(zhuǎn)到 https://github.com/Microsoft/WinAppDriver/releases然后下載兩個(gè)APP,

    • WinAppDriver - 允許您運(yùn)行測(cè)試,需要安裝。
    • WinAppDriver UI Recorder - 允許您在運(yùn)行時(shí)記錄測(cè)試,不需要安裝 - 將下載的存檔解壓到任何文件夾。

    2. 在Windows中打開(kāi)Developer Mode。

    3. 以管理員身份運(yùn)行WinAppDriver.exe并使其運(yùn)行,請(qǐng)注意應(yīng)用程序正在偵聽(tīng)的地址,稍后您將需要它。

    DevExpress Winforms使用技巧教程

    4. 打開(kāi)您要測(cè)試的Visual Studio解決方案,或創(chuàng)建一個(gè)新的示例解決方案。

    5. 將新的單元測(cè)試項(xiàng)目添加到解決方案。

    DevExpress Winforms使用技巧教程

    6. 在Solution Explorer中右鍵單擊Unit Test project,然后選擇“Manage NuGet Packages…”,安裝最新的穩(wěn)定Appium.WebDriver程序包。

    7. 打開(kāi)Unit Test項(xiàng)目的UnitTest1.cs文件,并添加兩個(gè)類(lèi):MainDemoSession(定義開(kāi)始和結(jié)束測(cè)試會(huì)話的方法)和Helper(包含查找被測(cè)試的UI元素的方法),將步驟3中的地址用作WindowsApplicationDriverUrl值。

    public class MainDemoSession{protected const string WindowsApplicationDriverUrl = "http://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. 修改自動(dòng)生成的UnitTest1類(lèi),如下所示:

    [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. 運(yùn)行您的應(yīng)用程序,并將其拖到主系統(tǒng)顯示屏上(如果您具有多屏幕設(shè)置)。

    10. 啟動(dòng)WinAppDriver UI Recorder然后點(diǎn)擊“Record”, 將鼠標(biāo)懸停在要與之交互的第一個(gè)UI元素上,然后等待它開(kāi)始閃爍藍(lán)色。Recorder的狀態(tài)欄會(huì)將其文本從“Active”更改為“XPath Ready”。

    DevExpress Winforms使用技巧教程

    11. 當(dāng)該元素閃爍時(shí),recorder已準(zhǔn)備就緒,您可以執(zhí)行UI操作:?jiǎn)螕舸嗽亍⑵渫蟿?dòng)、輸入新值等。完成此元素后,將鼠標(biāo)懸停在另一個(gè)UI元素上,等待 recorder的確認(rèn)并重復(fù)該過(guò)程。

    12. 記錄了要重現(xiàn)的一系列步驟后,請(qǐng)?jiān)趓ecorder中單擊“Pause”,您可以打開(kāi)actions selector確保已記錄所有UI操作。

    DevExpress Winforms使用技巧教程

    13. 單擊“Generate and copy C# code to Clipboard”按鈕來(lái)復(fù)制所有記錄的操作代碼,將此代碼粘貼到UnitTest1.TestMethod1方法中。 例如,下面的代碼選擇“Job”標(biāo)簽。

    DevExpress Winforms使用技巧教程
    [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. 在內(nèi)部測(cè)試期間,自動(dòng)生成的代碼可能無(wú)法通過(guò)其完整路徑找到UI元素:

    /Pane\[@ClassName=\"#32769\"\][@Name=\"Desktop 1\"]/Window[starts-with…

    如果發(fā)生這種情況,請(qǐng)縮短所有元素路徑,使其以“ / Window”開(kāi)頭。

    string xpath_LeftClickTabItemJob_20_31 = "/Window[starts-with(@AutomationId...";

    此外,您可以使用Assert.Fail而不是Console.WriteLine來(lái)調(diào)試測(cè)試(如果找不到UI元素,則可以)。

    Assert.Fail($"Failed to find element...");

    15. 在Visual Studio中右鍵單擊Unit Test project,然后單擊“Run Tests”。測(cè)試將啟動(dòng)您的應(yīng)用程序,重復(fù)所有記錄的步驟,然后關(guān)閉應(yīng)用程序。 所有測(cè)試操作都記錄在步驟3中啟動(dòng)的WinAppDriver控制臺(tái)中。

    DevExpress Winforms使用技巧教程

    您可以通過(guò)與Coded UI相同的方式啟動(dòng)Appium測(cè)試,唯一的區(qū)別是您需要在測(cè)試執(zhí)行計(jì)算機(jī)上運(yùn)行WinAppDriver。


    DevExpress v19.2全新發(fā)布,最新動(dòng)態(tài)請(qǐng)持續(xù)關(guān)注DevExpress中文網(wǎng)!

    DevExpress中文網(wǎng)官網(wǎng)QQ群:540330292      歡迎一起進(jìn)群討論

    DevExpress 2019年度界面大賽火熱開(kāi)啟!曬圖有獎(jiǎng),各大視頻VIP免費(fèi)領(lǐng)取!

    掃描下方二維碼,立即參與哦!

    DevExpress中文網(wǎng)微信
    掃碼咨詢(xún)


    添加微信 立即咨詢(xún)

    電話咨詢(xún)

    客服熱線
    023-68661681

    TOP
    三级成人熟女影院,欧美午夜成人精品视频,亚洲国产成人乱色在线观看,色中色成人论坛 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();