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

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

下載app免費領取會員

NULL

ad.jpg

二次開發(fā)教程:C# 初探UI Automation

發(fā)布于: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;

        }

    }

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

未標題-1.jpg

上一篇:二次開發(fā)教程:C# 動態(tài)生成程序集

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

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

      9000px;">

          国产精品色哟哟网站| 欧美一区二区三区免费大片| 久久精品亚洲精品国产欧美 | 色偷偷88欧美精品久久久| 国产网站一区二区三区| 国产精品18久久久久久久久| 国产女人aaa级久久久级| 粉嫩嫩av羞羞动漫久久久| 欧美激情中文不卡| 国产成人丝袜美腿| 最新国产の精品合集bt伙计| 色婷婷av一区二区三区gif| 一区二区三区美女视频| 欧美女孩性生活视频| 免费欧美高清视频| 久久蜜桃av一区二区天堂| 99久久免费精品高清特色大片| 亚洲精品国产一区二区精华液 | 欧美成人精品二区三区99精品| 久久精品国产77777蜜臀| 久久综合视频网| 成人av网址在线观看| 一区二区三区精品| 欧美videofree性高清杂交| 国产精品一二一区| 国产精品国产自产拍在线| 欧美性做爰猛烈叫床潮| 极品美女销魂一区二区三区免费| 日本一区二区视频在线观看| 在线精品亚洲一区二区不卡| 日本伊人午夜精品| 国产欧美视频在线观看| 欧美中文字幕一区| 国产精品综合久久| 亚洲午夜在线视频| 久久久99精品免费观看| 精品视频免费在线| 国产成人综合视频| 亚洲国产成人av网| 中文成人综合网| 91麻豆精品国产无毒不卡在线观看| 国产一区91精品张津瑜| 有码一区二区三区| 国产亚洲一区字幕| 欧美日韩高清不卡| av在线播放成人| 久久精品国产秦先生| 亚洲欧美日韩在线不卡| 久久综合网色—综合色88| 在线精品视频一区二区| 成人性生交大片免费看在线播放| 亚洲风情在线资源站| 国产精品国模大尺度视频| 欧美一级片在线观看| 99国产欧美久久久精品| 激情小说亚洲一区| 视频在线观看一区| 亚洲精选免费视频| 国产欧美精品一区aⅴ影院| 精品乱码亚洲一区二区不卡| 欧美写真视频网站| 91原创在线视频| 国产成人aaaa| 国产精品66部| 国产乱人伦偷精品视频不卡| 日本成人在线网站| 亚洲va韩国va欧美va| 亚洲欧美激情在线| 国产精品久久久久aaaa| 国产欧美一区二区精品性色| 久久女同性恋中文字幕| 欧美成人女星排行榜| 欧美一级免费观看| 欧美精品视频www在线观看| 色www精品视频在线观看| www.性欧美| av网站免费线看精品| 粉嫩高潮美女一区二区三区 | 欧美亚日韩国产aⅴ精品中极品| 9人人澡人人爽人人精品| 国产一区二区不卡| 国产激情91久久精品导航| 精品一区二区国语对白| 精品一区二区三区香蕉蜜桃 | 国产999精品久久久久久| 粉嫩一区二区三区性色av| 粉嫩高潮美女一区二区三区| 成人午夜激情影院| 国产精品66部| 91在线视频免费91| 一本大道久久a久久综合| 在线观看日韩精品| 3d成人h动漫网站入口| 91精品欧美综合在线观看最新| 欧美精品v国产精品v日韩精品| 欧美丰满嫩嫩电影| 91精品国产乱码久久蜜臀| 2021国产精品久久精品| 国产精品视频你懂的| 一区二区三区四区不卡视频| 亚洲国产视频在线| 老司机午夜精品99久久| 国产999精品久久久久久绿帽| 99视频热这里只有精品免费| 91国偷自产一区二区使用方法| 欧美乱妇15p| 精品国产sm最大网站| 国产欧美在线观看一区| 亚洲一区中文在线| 美日韩一区二区| 成人激情开心网| 欧美日韩成人在线| 国产亚洲欧美在线| 亚洲最新视频在线播放| 美国精品在线观看| 99在线精品一区二区三区| 欧美亚洲禁片免费| 久久久久国产精品麻豆| 亚洲一区二区三区自拍| 韩国av一区二区三区| 日本精品裸体写真集在线观看| 日韩精品一区二区三区蜜臀| 中文字幕在线视频一区| 美女在线观看视频一区二区| 成人禁用看黄a在线| 欧美福利电影网| 成人欧美一区二区三区小说| 麻豆国产精品官网| 99亚偷拍自图区亚洲| 精品国产污网站| 日韩久久一区二区| 国产精品一线二线三线精华| 91国偷自产一区二区开放时间 | 国产日韩欧美在线一区| 视频一区欧美日韩| 色综合一区二区三区| 日韩精品一区二区三区视频| 亚洲精品精品亚洲| 国产99精品在线观看| 欧美一区永久视频免费观看| 综合av第一页| 春色校园综合激情亚洲| 欧美一级一区二区| 亚洲国产你懂的| 92精品国产成人观看免费 | 4438成人网| 亚洲高清不卡在线观看| 成人动漫视频在线| 久久先锋影音av| 青青草国产成人99久久| 在线免费观看视频一区| 综合亚洲深深色噜噜狠狠网站| 国产成人免费视频| 26uuu色噜噜精品一区| 日韩精品一二区| 欧美日韩亚洲综合在线| 一区二区三区四区国产精品| 不卡电影免费在线播放一区| 国产亚洲精品7777| 国产毛片精品一区| 精品国产一区二区三区久久影院| 日韩av网站免费在线| 欧美性色欧美a在线播放| 亚洲精品高清在线观看| a美女胸又www黄视频久久| 国产欧美精品一区aⅴ影院| 国产成人av影院| 久久久蜜桃精品| 国产黄色精品视频| 国产欧美一区二区三区鸳鸯浴 | 亚洲免费观看高清| 在线观看国产91| 亚洲自拍都市欧美小说| 欧美日韩综合一区| 日本vs亚洲vs韩国一区三区二区| 欧美一区二区三区不卡| 精品综合免费视频观看| 国产三级精品三级在线专区| 成人动漫视频在线| 亚洲欧美精品午睡沙发| 欧美三级中文字幕| 日韩电影一二三区| 精品成人一区二区| 国产成人99久久亚洲综合精品| 国产精品国产三级国产普通话三级 | 91老师国产黑色丝袜在线| 亚洲小说春色综合另类电影| 911精品产国品一二三产区| 毛片基地黄久久久久久天堂| 久久久亚洲综合| 99在线精品一区二区三区| 一区二区久久久久| 欧美成人伊人久久综合网| 国产成人午夜99999| 亚洲人一二三区| 日韩一区二区视频在线观看| 国产乱码一区二区三区| 亚洲啪啪综合av一区二区三区| 欧美在线看片a免费观看| 日韩激情中文字幕|