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

      9000px;">

          国产欧美一二三区| 久久亚洲精华国产精华液| 欧美剧情电影在线观看完整版免费励志电影 | 欧美酷刑日本凌虐凌虐| 亚洲国产电影在线观看| 日韩精品免费视频人成| 欧美本精品男人aⅴ天堂| 裸体歌舞表演一区二区| 日韩欧美国产小视频| 日韩 欧美一区二区三区| 欧美色图激情小说| 亚洲 欧美综合在线网络| 91在线观看污| 欧美体内she精视频| 丝袜亚洲另类欧美| 亚洲一区二区在线视频| 欧美日韩久久久一区| 视频一区二区欧美| 国产欧美一二三区| av不卡免费电影| 日本成人在线视频网站| 精品久久久久香蕉网| 精品一区二区在线观看| 国产精品色婷婷| 色中色一区二区| 激情小说亚洲一区| 亚洲一区二区精品视频| 久久午夜国产精品| 欧美一级高清大全免费观看| 色婷婷综合五月| 国产成人a级片| 奇米影视在线99精品| 激情图区综合网| 亚洲视频在线一区| 久久久久99精品国产片| 日韩精品一区二区三区蜜臀| 99久久精品国产一区| 久久99久久精品| 亚洲欧美国产高清| 国产精品美女久久久久久久久| 欧美偷拍一区二区| 91免费版在线看| 精品一区二区国语对白| 五月婷婷综合网| 亚洲欧洲日韩一区二区三区| 久久精品国产第一区二区三区| 国产精品素人一区二区| 日韩久久一区二区| 久久精品一区二区三区不卡牛牛| 日韩欧美亚洲国产另类| 欧美疯狂性受xxxxx喷水图片| 国产成人a级片| 国产美女一区二区三区| 韩国欧美国产1区| 久久99久久99| 狠狠网亚洲精品| 免费成人在线视频观看| 日韩电影在线免费观看| 亚洲午夜一二三区视频| 日韩美女视频19| 精品粉嫩超白一线天av| 国产色一区二区| 日本一区二区三区四区| 国产精品久久久久三级| 亚洲黄色av一区| 天天综合网 天天综合色| 美日韩一级片在线观看| 丝袜美腿亚洲一区二区图片| 午夜精品久久久久久久| 青青草精品视频| 国产制服丝袜一区| 免费看欧美女人艹b| 欧美卡1卡2卡| 日韩欧美国产三级| 国产精品日日摸夜夜摸av| 91亚洲大成网污www| 亚洲午夜在线电影| 美女在线视频一区| 精品无人码麻豆乱码1区2区| 国产一区二区三区黄视频| 国产91露脸合集magnet| 成人黄色片在线观看| 成人av集中营| 91精品麻豆日日躁夜夜躁| 欧美一级欧美三级| 国产女主播一区| 自拍偷拍国产精品| 精品一区二区三区在线视频| 综合激情成人伊人| 视频一区视频二区中文字幕| 久久99在线观看| 国产成人三级在线观看| 欧美日韩国产高清一区二区| 精品国产一区二区精华 | 欧美在线啊v一区| 91麻豆精品国产91久久久使用方法| 久久欧美一区二区| 午夜精品影院在线观看| 99久久精品国产一区二区三区| 日韩女优视频免费观看| 亚洲精品乱码久久久久久黑人 | 欧美三日本三级三级在线播放| 2021中文字幕一区亚洲| 日日骚欧美日韩| 色婷婷久久久久swag精品| 国产三级欧美三级日产三级99| 日韩高清不卡一区二区| 欧美网站大全在线观看| 综合久久久久综合| 成人免费观看男女羞羞视频| 日韩欧美亚洲另类制服综合在线| 亚洲国产美女搞黄色| 成人免费黄色在线| 久久夜色精品国产欧美乱极品| 亚洲丝袜自拍清纯另类| 成人综合婷婷国产精品久久免费| 777欧美精品| 亚洲国产精品久久不卡毛片| aa级大片欧美| 精品99一区二区三区| 蜜臀av一级做a爰片久久| 在线观看一区日韩| 亚洲精品videosex极品| 国产曰批免费观看久久久| 精品久久人人做人人爰| 日韩电影在线一区二区| 欧美一区二区视频免费观看| 综合久久久久久| 国产精品色在线观看| 国产v综合v亚洲欧| 91精品一区二区三区久久久久久| 亚洲国产精品高清| 激情小说欧美图片| 午夜私人影院久久久久| 欧美嫩在线观看| 天堂影院一区二区| 一本色道亚洲精品aⅴ| 亚洲精品videosex极品| 欧美三级韩国三级日本三斤| 亚洲综合一区二区| 欧美日韩国产小视频| 久久精品国产**网站演员| 日韩精品自拍偷拍| 久久99精品国产| 国产精品全国免费观看高清| 91久久奴性调教| 欧美撒尿777hd撒尿| 视频一区免费在线观看| 337p日本欧洲亚洲大胆色噜噜| 美腿丝袜在线亚洲一区| 日本一区二区在线不卡| 在线观看免费亚洲| 日韩和的一区二区| 国产亚洲一区字幕| 91社区在线播放| 久久精品噜噜噜成人av农村| 国产精品久久久久久久久图文区| 欧美色图在线观看| 国产美女av一区二区三区| 专区另类欧美日韩| 日韩一二三区视频| 成人免费高清视频在线观看| 国产精品三级av在线播放| 欧美色网一区二区| 国内成+人亚洲+欧美+综合在线| 国产精品麻豆一区二区| 欧美图区在线视频| 麻豆精品久久精品色综合| 国产日韩成人精品| 欧美三级三级三级爽爽爽| 老司机午夜精品99久久| 亚洲男人天堂av网| 日韩一区二区精品| 91麻豆自制传媒国产之光| 欧美成人精品1314www| av毛片久久久久**hd| 天天爽夜夜爽夜夜爽精品视频| 国产精品理伦片| 欧美亚洲高清一区| 麻豆免费精品视频| 亚洲在线视频免费观看| 久久精品欧美一区二区三区不卡| 91久久久免费一区二区| 国产精品一区免费在线观看| 亚洲一卡二卡三卡四卡| 久久亚洲综合av| 日韩欧美一区二区在线视频| 99视频有精品| 国产成人在线网站| 激情欧美一区二区| 日韩综合在线视频| 亚洲老司机在线| 日韩亚洲欧美在线| 91国模大尺度私拍在线视频| 国产精品久久久久桃色tv| 欧美videossexotv100| 欧美三级三级三级爽爽爽| 色狠狠av一区二区三区| 成人自拍视频在线| 国产福利精品一区二区|