不卡视频在线观看_三级网站视频在线观看_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;">

          日韩精品一区二区三区在线播放| 久久久久99精品一区| 国产一区二区三区在线观看免费视频| 亚洲黄网站在线观看| 国产亚洲欧美中文| 欧美午夜精品免费| 九一九一国产精品| 亚洲一区在线免费观看| 国产欧美日韩另类视频免费观看| 6080国产精品一区二区| 欧美日本一道本在线视频| 欧美视频你懂的| 制服丝袜日韩国产| 91精品国产综合久久久久久| 欧美高清性hdvideosex| 欧美日韩美女一区二区| 欧美伦理电影网| 日韩三级高清在线| 久久综合一区二区| 国产亚洲人成网站| 亚洲一区二区三区国产| 午夜精品福利一区二区蜜股av| 久久久美女毛片| 亚洲精品精品亚洲| 亚洲天堂免费在线观看视频| 国产午夜精品福利| 国产精品美女视频| 亚洲综合一区二区三区| 亚洲高清免费一级二级三级| 麻豆精品蜜桃视频网站| 国产成+人+日韩+欧美+亚洲| 99re6这里只有精品视频在线观看| 成人网男人的天堂| 99re成人精品视频| 欧洲精品视频在线观看| 欧美精品亚洲一区二区在线播放| 在线不卡中文字幕播放| 亚洲精品一区二区在线观看| 国产精品久久久久影院色老大 | 91在线观看一区二区| 欧美午夜一区二区| 久久久久高清精品| 亚洲va中文字幕| 不卡的av在线播放| 日韩一区二区视频| 综合av第一页| 精品一区二区在线播放| 欧美日韩中文精品| 国产精品国产馆在线真实露脸 | 国产精品正在播放| 极品销魂美女一区二区三区| 国产精品香蕉一区二区三区| 欧美亚洲国产一卡| 欧美极品美女视频| 日韩专区中文字幕一区二区| 99re这里都是精品| 久久久久久久久久久久电影 | 国产成人在线看| 91精品国产综合久久精品app | 精品在线免费观看| 欧美性猛交xxxxxxxx| 国产欧美一区二区精品性| 99精品久久只有精品| 欧美日韩高清一区二区| 久久精品一区二区三区四区| 亚洲自拍偷拍图区| www.在线成人| 国产欧美一区二区精品性| 久久精品国产99| 欧美一区二视频| 五月激情丁香一区二区三区| 91福利视频在线| 最近日韩中文字幕| 不卡一区在线观看| 欧美激情中文字幕| 成人一区二区在线观看| 中文字幕av一区二区三区| 成人亚洲精品久久久久软件| 久久久久久久免费视频了| 国内成人自拍视频| 久久在线观看免费| 懂色中文一区二区在线播放| 国产精品家庭影院| 美女视频黄a大片欧美| 成人精品一区二区三区四区| 精品国产一区二区三区久久久蜜月| 五月激情丁香一区二区三区| 欧美日韩成人在线一区| 亚洲影院理伦片| 欧美一区二区三区电影| 男人的天堂久久精品| 精品国产1区二区| 国产成人免费视频网站 | 亚洲欧美欧美一区二区三区| 色哟哟国产精品| 亚洲精品免费电影| 欧美撒尿777hd撒尿| 五月婷婷色综合| 欧美电影免费观看完整版| 国产成人免费在线视频| 一区二区高清在线| 亚洲综合成人在线视频| 一区视频在线播放| 91原创在线视频| 亚洲国产精品影院| 精品欧美乱码久久久久久| 国精产品一区一区三区mba桃花| 日本一区二区三区电影| 色婷婷综合激情| 久久精品国产精品亚洲红杏| 欧美国产一区视频在线观看| 在线观看一区二区精品视频| 看国产成人h片视频| 国产精品久久久久久久久搜平片| 91福利国产精品| 久久精工是国产品牌吗| 日韩美女啊v在线免费观看| 欧美高清dvd| 99久久久免费精品国产一区二区 | 欧美在线观看你懂的| 国产一区二区伦理片| 亚洲欧美一区二区三区极速播放| 欧美一区二区三区男人的天堂| 丁香激情综合五月| 久久99久久久久| 亚洲综合清纯丝袜自拍| 亚洲国产精品黑人久久久| 3d成人h动漫网站入口| youjizz国产精品| 国产一区二区三区观看| 亚洲成人精品一区| 亚洲免费av观看| 美腿丝袜亚洲色图| 国产欧美一区二区精品久导航| 欧美在线观看视频一区二区三区| 国产一区二区三区| 蜜桃视频免费观看一区| 亚洲午夜视频在线观看| 1024精品合集| 国产精品久久久久久久久搜平片| 欧美mv和日韩mv的网站| 日韩精品一区国产麻豆| 欧美高清hd18日本| 91精品久久久久久久99蜜桃| 欧美日韩一区精品| 在线欧美小视频| 在线精品国精品国产尤物884a| 99精品久久只有精品| 91在线视频在线| 91在线视频网址| 色噜噜狠狠色综合欧洲selulu| 成人免费毛片app| 成人av在线网| 不卡的看片网站| 日本大香伊一区二区三区| 91香蕉视频在线| 91福利小视频| 777久久久精品| 欧美va天堂va视频va在线| 日韩欧美国产系列| www国产精品av| 国产精品福利一区| 一区在线观看免费| 亚洲永久免费av| 青青草国产成人av片免费| 麻豆精品在线视频| 国产福利一区二区三区视频| 99久久久久久| 欧美三级在线看| 26uuu成人网一区二区三区| 久久久精品日韩欧美| 国产精品家庭影院| 一区二区三区不卡视频在线观看| 亚洲福利视频三区| 日韩av电影一区| 国产白丝网站精品污在线入口| 99久久国产综合精品女不卡| 欧美色视频在线| 久久久精品一品道一区| 亚洲人123区| 久久99精品久久久久久久久久久久| 国产一区二区免费看| 99久久精品99国产精品| 欧美一区二区三区在| 久久久久国产精品免费免费搜索| 综合久久久久久久| 青青草伊人久久| www.日本不卡| 日韩三级中文字幕| 最新国产精品久久精品| 无吗不卡中文字幕| 成人精品免费看| 欧美一区在线视频| 亚洲欧美成aⅴ人在线观看| 青娱乐精品视频在线| 一本色道久久综合亚洲91| 精品三级av在线| 亚洲一区二区三区激情| 不卡一区中文字幕| 精品国产乱码久久久久久牛牛 |