不卡视频在线观看_三级网站视频在线观看_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精品网站_国产综合一区二区

      欧美激情一区二区三区不卡| 国产精品v亚洲精品v日韩精品| 亚洲国产精品久久久久秋霞影院| 欧美日韩国产一区二区三区| 久久精品国产欧美激情| 亚洲毛片av| 红杏aⅴ成人免费视频| 欧美体内she精视频| 美女尤物久久精品| 欧美一区免费| 亚洲视频二区| 99精品视频免费| 亚洲国产影院| 伊人久久大香线蕉av超碰演员| 欧美系列一区| 欧美日韩精品免费| 欧美国产一区二区在线观看 | 国产精品视频一二| 欧美日韩国产在线播放网站| 老鸭窝亚洲一区二区三区| 亚洲欧美成人| 亚洲综合丁香| 亚洲一二区在线| 亚洲图色在线| 亚洲图中文字幕| aa级大片欧美三级| 日韩亚洲成人av在线| 亚洲美女在线视频| 99pao成人国产永久免费视频| 亚洲国产精品va在线观看黑人| 激情久久影院| 亚洲国产日韩一区| 亚洲免费av观看| 一区二区三区国产精品| 制服丝袜激情欧洲亚洲| 亚洲视频一区二区| 亚洲一区二区三区免费观看| 亚洲欧美国产制服动漫| 亚洲欧美综合v| 久久精品免费| 欧美福利在线观看| 欧美日韩亚洲另类| 国产亚洲欧美一区二区| 红桃视频亚洲| 日韩视频一区二区| 亚洲欧美日韩网| 久久久久综合| 欧美日韩精品一区二区天天拍小说 | 欧美一区在线看| 久久久久看片| 欧美精品在线播放| 国产精品免费小视频| 一区二区三区在线视频播放| 亚洲精品美女在线| 午夜激情久久久| 亚洲男人第一网站| 久久男女视频| 欧美日韩一区在线| 激情视频一区二区三区| 亚洲免费久久| 久久久久久久一区二区| 欧美日本在线播放| 国产亚洲一区二区精品| 亚洲另类在线一区| 欧美在线影院在线视频| 欧美激情第二页| 国产亚洲成人一区| 亚洲欧洲一区二区三区在线观看| 亚洲欧美日韩国产中文| 欧美精品v日韩精品v国产精品 | 中日韩视频在线观看| 久久久水蜜桃| 国产精品久久777777毛茸茸| 亚洲成人在线| 欧美在线二区| 国产精品欧美日韩久久| 亚洲精品在线观看视频| 久久久久久综合| 国产女人aaa级久久久级| 亚洲免费观看高清完整版在线观看| 欧美专区日韩专区| 国产精品久久久久久久午夜片 | 欧美久久精品午夜青青大伊人| 国产精品视频久久久| 亚洲精品久久视频| 欧美aⅴ99久久黑人专区| 韩日在线一区| 久久成人av少妇免费| 国产精品视频在线观看| 夜夜爽av福利精品导航| 欧美日韩国产小视频| 亚洲黑丝在线| 欧美ed2k| 亚洲精选在线| 欧美精品18+| 日韩亚洲欧美在线观看| 欧美日本亚洲| 日韩视频免费在线观看| 欧美日韩第一页| 亚洲黄色精品| 欧美日韩视频不卡| 一区二区日韩免费看| 欧美日韩国产影片| 亚洲午夜伦理| 国产女主播一区二区三区| 午夜综合激情| 国内视频精品| 欧美成ee人免费视频| 亚洲人体偷拍| 国产精品老女人精品视频| 亚洲综合不卡| 狠狠色丁香久久婷婷综合_中| 久久久99精品免费观看不卡| 亚洲国产精品综合| 欧美色另类天堂2015| 亚洲欧美日韩精品一区二区| 国产在线高清精品| 美女黄色成人网| 亚洲视频在线观看| 国产日韩欧美一区二区三区在线观看 | 免费观看成人www动漫视频| 亚洲第一福利社区| 欧美日韩免费一区| 久久国产精品久久国产精品| 尤物yw午夜国产精品视频| 欧美精品123区| 性做久久久久久久免费看| 伊甸园精品99久久久久久| 欧美理论视频| 久久久精品国产免大香伊| 亚洲国产精品小视频| 国产精品九九| 欧美成人按摩| 欧美一区=区| 99在线热播精品免费99热| 国产午夜精品全部视频在线播放| 欧美成人亚洲| 午夜一区在线| 亚洲美女视频| 在线观看视频日韩| 国产精品美女视频网站| 欧美.www| 久久久久国产一区二区三区| 亚洲一区二区3| 1024成人| 国产中文一区二区| 国产精品美女一区二区| 欧美激情一区二区三区全黄| 久久久久免费观看| 亚洲欧美精品伊人久久| 亚洲精品一区二区三区樱花| 一区精品久久| 国产偷自视频区视频一区二区| 欧美精品一区在线| 欧美va亚洲va国产综合| 久久aⅴ国产紧身牛仔裤| 亚洲综合好骚| 亚洲一区欧美一区| 一区二区三区精品国产| 亚洲精品免费一区二区三区| 一区视频在线看| 一区二区三区自拍| 黄网动漫久久久| 国产一区自拍视频| 国产日韩一区在线| 国产视频精品网| 国产日韩一区二区三区在线播放| 国产精品国产三级国产专区53 | 欧美日韩国产成人在线| 女人色偷偷aa久久天堂| 乱中年女人伦av一区二区| 久久色中文字幕| 免费日韩一区二区| 欧美成人亚洲成人日韩成人| 欧美mv日韩mv国产网站| 欧美黄色小视频| 欧美日韩中文字幕日韩欧美| 欧美日韩小视频| 国产精品久久午夜| 国产日本欧美在线观看| 国语自产偷拍精品视频偷| 精品动漫3d一区二区三区| 狠狠色伊人亚洲综合网站色| 亚洲国产第一页| 亚洲免费成人av| 亚洲欧美变态国产另类| 久久精品女人| 蜜臀久久99精品久久久久久9| 一本色道久久综合亚洲精品不卡| 国产精品国产三级国产aⅴ浪潮 | 亚洲欧洲精品一区| 亚洲精品乱码久久久久久黑人| 亚洲国产一二三| 亚洲电影有码| 亚洲大胆女人| 亚洲国产精品电影在线观看| 91久久久久久久久| 亚洲一区二区少妇| 久久国产乱子精品免费女 | 欧美777四色影视在线|