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

          秋霞欧美一区二区三区视频免费| 中文字幕av网站| 免费三片在线播放| 人妻互换一二三区激情视频| 人妻妺妺窝人体色www聚色窝| 欧美日韩在线国产| 四虎精品免费视频| 亚洲精品乱码久久久久久久| 亚洲另类欧美日韩| 变态另类ts人妖一区二区| 国产精品免费av一区二区| 久草视频精品在线| 日韩Av无码精品| 中文字幕一区久久| 91香蕉视频污在线观看| 国产精品20p| 密臀av一区二区三区| 色综合手机在线| 中文字幕一区二区三区四区视频 | 手机看片久久久| 亚洲乱码在线观看| 国产精品熟女久久久久久| 男人的天堂av网| 又色又爽又黄18网站| 国产jjizz一区二区三区视频| 久草视频手机在线| 性少妇bbw张开| 国产刺激高潮av| 欧美成人久久久免费播放| 在线观看亚洲欧美| 国产精品久久久久久免费免熟| 欧美成人免费观看视频 | 午夜av免费在线观看| 一二三区免费视频| 久久激情免费视频| 中日韩av在线播放| 国产熟女一区二区| 手机在线中文字幕| 国产叼嘿视频在线观看| 日韩人妻无码一区二区三区| 夜夜躁日日躁狠狠久久av| 久久久久久不卡| 最新黄色网址在线观看| 国产又粗又猛又爽又黄av| 无码免费一区二区三区| 国产黄色免费观看| 五月婷婷激情视频| 国产视频第一页| 影音先锋亚洲天堂| 久草网站在线观看| 亚洲一区二区色| 欧美精品久久久久久久久25p| 亚洲一区二区三区四区av| 欧美高清性xxxx| 逼特逼视频在线观看| 天天操天天射天天舔| 国产精品乱码久久久| 在线观看av网页| 乱子伦一区二区三区| www.国产一区二区| 五月婷婷开心网| 久久久久久久久久久久久女过产乱 | 免费无码一区二区三区| 亚洲综合色一区| 日韩欧美中文字幕视频| 国产成人在线免费观看视频| 在线免费观看av片| 欧美三级视频网站| 国产极品久久久| 中文 日韩 欧美| 日本一级大毛片a一| 国产视频在线一区| 91在线视频观看免费| 五月天婷婷视频| 蜜臀久久99精品久久久| 国产成人久久精品77777综合| 在线免费观看亚洲视频| 免费一级suv好看的国产网站| 大又大又粗又硬又爽少妇毛片| 中文av字幕在线观看| 人人干人人干人人| 精品人伦一区二区| 成人在线一级片| 亚洲自拍第三页| 在线免费观看av片| 少妇精品无码一区二区| 久久午夜福利电影| 国产精品三区在线观看| 一级 黄 色 片一| 在线免费观看av网| 无码人妻av免费一区二区三区 | 久久无码人妻精品一区二区三区| 超碰人人草人人| 91嫩草|国产丨精品入口| 中文字幕av影院| 日批免费观看视频| 欧美激情精品久久久久久免费| 国产又粗又长又爽又黄的视频| www.超碰com| 91午夜精品亚洲一区二区三区| 中文字幕一区二区久久人妻| 亚洲不卡免费视频| 婷婷激情四射五月天| 手机看片福利在线| 特级毛片www| 少妇毛片一区二区三区| 日韩在线一区二区三区四区| 日韩精品一卡二卡| 日韩精品在线一区二区三区| 日韩大片一区二区| 日韩三级一区二区三区| 日韩有码第一页| 日韩中文字幕免费在线观看| 色无极影院亚洲| 熟女少妇a性色生活片毛片| 日韩av卡一卡二| 日韩av加勒比| 性欧美一区二区三区| 中文字幕+乱码+中文乱码91| 中文字幕免费观看视频| 中文字幕在线观看免费视频| 亚洲天天综合网| 一级日韩一级欧美| www.国产com| 国产一级视频在线| 久久精品视频在线观看免费| 久久久久久无码精品人妻一区二区 | 国产精品2020| 精品国产九九九| 免费在线观看黄色av| 日韩Av无码精品| 永久免费看片视频教学| 夜夜躁日日躁狠狠久久av| 国产黄色片免费| 免费观看成人毛片| 色综合天天色综合| 亚洲乱熟女一区二区| 国产精品30p| 男人的天堂久久久| 亚洲爆乳无码一区二区三区| 亚洲最大免费视频| 国产综合在线播放| 日韩xxxxxxxxx| 亚洲男人天堂2021| 国产三级视频在线播放| 欧美日韩大片在线观看| 亚欧美一区二区三区| a级大片免费看| 久久草视频在线| 污视频在线免费观看| 99日在线视频| 欧美高清性xxxx| 中文在线免费看视频| 国产精品成人网站| 日本猛少妇色xxxxx免费网站| 亚洲黄色在线播放| 国产三级理论片| 香蕉久久久久久久| 国产激情视频在线播放| 日本一区二区免费电影| 亚洲视频一区在线播放| 国内国产精品天干天干| 香蕉网在线播放| 成人三级做爰av| 日韩精品xxx| 国产67194| 日本一区二区在线免费观看| 亚洲图片小说视频| 久久精品久久国产| 中文字幕一二三区| 久久亚洲av午夜福利精品一区| 亚洲第一黄色片| 国产无遮挡又黄又爽在线观看| 神马午夜精品95| 国产精品人人妻人人爽| 四虎成人在线播放| 国产色综合视频| 中文字幕人妻丝袜乱一区三区| 狠狠躁日日躁夜夜躁av| 在线免费观看中文字幕| 精品无码人妻少妇久久久久久| 中文字幕黄色片| 久久久精品人妻一区二区三区四| 亚洲理论片在线观看| 欧美日韩一区二区区别是什么| av电影在线不卡| 日韩在线观看视频一区二区| 国产乱码精品一区二区| 亚洲av鲁丝一区二区三区| 九九热精彩视频| 91看片在线播放| 五月天综合激情| 久久久久久久久久久久久女过产乱 | 国产日韩欧美在线观看视频| 香蕉国产在线视频| 久久美女免费视频| www亚洲视频| 亚洲精品久久久久久无码色欲四季| 久久亚洲无码视频| 丰满人妻一区二区三区四区53 |