不卡视频在线观看_三级网站视频在线观看_91精品网站_国产综合一区二区

完善主體資料,免費贈送VIP會員!
* 主體類型
* 企業名稱
* 信用代碼
* 所在行業
* 企業規模
* 所在職位
* 姓名
* 所在行業
* 學歷
* 工作性質
請先選擇行業
您還可以選擇以下福利:
行業福利,領完即止!

下載app免費領取會員

NULL

ad.jpg

二次開發教程:C# 初探UI Automation

發布于:2019-07-24 16:45:29

網友投稿

更多

最近研究自動化測試,看了一下UI Automation的微軟例子,表示太老了,遇到各種問題,


UI Spy 好像已經被放棄了,可以用inspect.exe來代替,win10 的路徑為:"C:\Program Files (x86)\Windows Kits\8.1\bin\x64\inspect.exe"


這個用來查詢automationId,


官網是以計算器例子,下面是在win10 修改后能運行版本




    class CalcAutomationClient

    {


         AutomationElement calWindow = null;//計算器窗口主窗口元素



         string resultTextAutoID = "CalculatorResults";

         string btn5AutoID = "num5Button";

         string btn3AutoID = "num3Button";

         string btn2AutoID = "num2Button";

         string btnPlusAutoID = "plusButton";

         string btnSubAutoId = "94";

         string btnEqualAutoID = "equalButton";

        static void Main(string[] args)

        {

            CalcAutomationClient autoClient = new CalcAutomationClient();

            AutomationEventHandler eventHandler = new AutomationEventHandler(autoClient.OnWindowOpenOrClose);

            Automation.AddAutomationEventHandler(WindowPattern.WindowOpenedEvent, AutomationElement.RootElement, TreeScope.Children, eventHandler);

            Process.Start("calc.exe");

            Console.ReadLine();

        }


        private void OnWindowOpenOrClose(object sender, AutomationEventArgs e)

        {

            if (calWindow != null)

                return;

            if(e.EventId!=WindowPattern.WindowOpenedEvent)

            {

                return;

            }

            if(sender ==null)

            {

                Console.WriteLine("sender is null");

                return;

            }

            Thread.Sleep(1000);//此處必須等待一下,應該是計算器的等待計算器完全加載,不然控件 找不到

            AutomationElement sourceElement = null;

            sourceElement = sender as AutomationElement;

            Console.WriteLine(sourceElement.Current.Name);

            try

            {

                sourceElement = sender as AutomationElement;

                Console.WriteLine(sourceElement.Current.Name);

                if (sourceElement.Current.Name=="計算器")

                {

                    calWindow = sourceElement;

                }

            }

            catch(Exception ex)

            {

                Console.WriteLine("ex:" + ex.Message);

                return;

            }

            if(calWindow == null)

            {

                return;

            }

            ExcuteTest();

        }

        private  void ExcuteTest()

        {

            ExcuteButtonInvoke(btn2AutoID);

            ExcuteButtonInvoke(btnPlusAutoID);

            ExcuteButtonInvoke(btn3AutoID);

            ExcuteButtonInvoke(btnEqualAutoID);

            string rs = GetCurrentResult();

            Console.WriteLine(rs);

        }

        private  void ExcuteButtonInvoke(string automationId)

        {

            Condition conditions = new AndCondition(

                new PropertyCondition(AutomationElement.AutomationIdProperty,automationId),

                new PropertyCondition(AutomationElement.ControlTypeProperty,ControlType.Button));

            if (calWindow == null)

                return;

            AutomationElementCollection collection = calWindow.FindAll(TreeScope.Descendants, conditions);

            if (collection == null || collection.Count == 0)

                return;

            AutomationElement btn = collection[0];

            if (btn != null)

            {

                InvokePattern invokeptn = (InvokePattern)btn.GetCurrentPattern(InvokePattern.Pattern);

                invokeptn.Invoke();

            }

            Thread.Sleep(1000);

        }

        private string GetCurrentResult()

        {

            Condition conditions = new AndCondition(

                new PropertyCondition(AutomationElement.AutomationIdProperty, resultTextAutoID),

                new PropertyCondition(AutomationElement.ControlTypeProperty,ControlType.Text));

            AutomationElement text = calWindow.FindAll(TreeScope.Descendants, conditions)[0];

            return text.Current.Name;

        }

    }

本文版權歸腿腿教學網及原創作者所有,未經授權,謝絕轉載。

未標題-1.jpg

上一篇:二次開發教程:C# 動態生成程序集

下一篇:二次開發教程:C# 反射性能

60acb4e0ef112.png
不卡视频在线观看_三级网站视频在线观看_91精品网站_国产综合一区二区

      久久久av网站| 国产精品美女www爽爽爽| 中文精品视频一区二区在线观看| 国产精品久久久久久久9999| 久久婷婷色综合| 亚洲欧美日韩精品一区二区| 亚洲欧洲在线视频| 国外成人在线视频网站| 欧美系列一区| 欧美精品久久久久a| 久久久精品五月天| 欧美一级一区| 亚洲欧美在线看| 亚洲香蕉网站| 亚洲午夜在线视频| 中国成人黄色视屏| 日韩亚洲综合在线| 亚洲理论电影网| 亚洲国产精品福利| 在线观看不卡av| 国内精品久久久久伊人av| 国产精品电影在线观看| 欧美天堂亚洲电影院在线观看| 欧美不卡视频一区| 毛片av中文字幕一区二区| 久久久久久久一区二区| 久久福利电影| 久热精品视频在线观看| 久久久久久电影| 久久久久综合| 蜜桃精品久久久久久久免费影院| 久久精品人人做人人爽电影蜜月| 欧美一区二区精品| 久久精品亚洲精品| 久久成人精品无人区| 欧美在线免费视屏| 久久久精品久久久久| 久热爱精品视频线路一| 欧美成人精品1314www| 欧美劲爆第一页| 欧美日韩精品在线视频| 国产精品久久久久久久久| 国产精品自在欧美一区| 国产亚洲一区二区三区在线观看| 国内一区二区在线视频观看| 国语自产精品视频在线看8查询8| 在线播放中文字幕一区| 91久久精品一区二区别| 亚洲网站在线| 久久手机免费观看| 欧美日韩hd| 国产精品亚洲一区| 亚洲高清二区| 夜夜嗨av一区二区三区网页 | 一区二区高清在线| 亚洲欧美偷拍卡通变态| 久久精品主播| 国产精品高潮呻吟久久av黑人| 国产老女人精品毛片久久| 在线观看中文字幕亚洲| 99国内精品| 久久一区视频| 国产精品最新自拍| 亚洲片在线资源| 欧美一区国产二区| 欧美激情第五页| 国产亚洲精品美女| 中文国产成人精品久久一| 久久久五月天| 国产精品一区二区三区乱码| 亚洲激情国产| 久久久噜噜噜久久人人看| 欧美无乱码久久久免费午夜一区| 伊人色综合久久天天| 亚洲制服少妇| 欧美日韩dvd在线观看| 一区二区三区在线观看欧美| 亚洲伊人久久综合| 欧美日韩国产成人精品| 国产精品一区二区黑丝| 欧美理论电影在线播放| 国产精品99免费看 | 日韩亚洲不卡在线| 久久精彩视频| 国产欧美一区二区三区久久人妖 | 欧美日韩国产一区二区| 国产精品丝袜久久久久久app| 国产一区二区高清不卡| 亚洲永久免费视频| 欧美性猛交99久久久久99按摩| 亚洲国产精品一区二区第一页| 久久狠狠一本精品综合网| 国产精品高潮粉嫩av| 一区二区三区 在线观看视频| 久久综合九色九九| 激情综合网址| 久久婷婷丁香| 在线欧美一区| 欧美va日韩va| 亚洲精品一区中文| 欧美激情精品久久久久久久变态 | 欧美激情久久久久久| 亚洲精品中文字幕在线| 欧美伦理影院| 亚洲视频第一页| 国产精品羞羞答答xxdd| 亚洲一区二区少妇| 国产亚洲精品久久飘花| 久久乐国产精品| 亚洲国产日韩一级| 欧美另类综合| 亚洲欧美日韩精品| 狠狠色丁香婷婷综合| 久久久综合激的五月天| 伊人婷婷久久| 欧美日韩视频在线第一区| 亚洲色图自拍| 韩国一区电影| 欧美日韩亚洲一区二区三区四区| 亚洲性视频网址| 含羞草久久爱69一区| 欧美不卡激情三级在线观看| 一区二区三区日韩欧美| 国产一区二区高清视频| 免费成人毛片| 性欧美超级视频| 亚洲国产精品一区二区久 | 欧美精品二区三区四区免费看视频| 亚洲毛片播放| 国产又爽又黄的激情精品视频| 欧美va日韩va| 欧美一区二区高清| 99re6这里只有精品| 国产一区二区三区久久精品| 欧美福利视频一区| 午夜亚洲性色福利视频| 亚洲国产美女久久久久| 国产精品久久久久9999| 久热精品在线视频| 亚洲欧美国产毛片在线| 亚洲人成小说网站色在线| 国产精品毛片va一区二区三区| 欧美粗暴jizz性欧美20| 欧美一区网站| 亚洲私人影院| 99精品视频一区二区三区| 影音先锋亚洲精品| 国产精品夜色7777狼人| 欧美日韩亚洲成人| 久久综合狠狠综合久久综合88| 亚洲一区亚洲二区| 99精品久久| 亚洲国产精品第一区二区| 国产亚洲一区二区三区| 国产精品电影在线观看| 欧美日韩国产影院| 麻豆国产精品一区二区三区| 欧美一级久久久| 亚洲嫩草精品久久| 妖精成人www高清在线观看| 91久久精品美女高潮| 亚洲高清网站| 在线看片一区| 亚洲第一色中文字幕| 曰韩精品一区二区| 一区二区视频免费在线观看| 国产一区二区三区最好精华液| 国产麻豆精品在线观看| 国产日产亚洲精品系列| 国产精品网站在线观看| 国产精品嫩草久久久久| 国产欧美一区视频| 国产日韩欧美一区| 国语对白精品一区二区| 亚洲高清久久网| 日韩一区二区精品| 一本一本久久| 午夜亚洲视频| 久久精品在线观看| 老牛国产精品一区的观看方式| 免费亚洲一区二区| 欧美日韩国产免费观看| 国产精品99一区| 国产伪娘ts一区| 亚洲国产精品精华液2区45| 亚洲人成网站精品片在线观看| 99综合视频| 午夜精品视频| 老司机精品福利视频| 欧美激情视频在线免费观看 欧美视频免费一| 蜜臀va亚洲va欧美va天堂| 欧美丰满高潮xxxx喷水动漫| 国产精品成人在线观看| 激情久久五月天| 一区二区三区国产精华| 欧美在线影院| 欧美日韩亚洲天堂| 国产视频一区在线观看一区免费| 影音先锋中文字幕一区| 亚洲婷婷综合色高清在线|