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

          日韩成人黄色片| 国产香蕉视频在线| 亚洲三级视频网站| www.xxxx日本| 国产美女明星三级做爰| 久久久久久久久毛片| 免费在线不卡视频| 神马一区二区三区| 亚洲欧美激情一区二区三区| 99热精品在线播放| 国产又粗又猛又爽又黄视频| 欧美 日韩 成人| 午夜福利视频一区二区| 亚洲性猛交xxxx乱大交| 国产精品国产三级国产专区52| 久久高清无码视频| 天天爽夜夜爽人人爽| 一本一道久久a久久综合蜜桃| 国产黄色片在线| 欧美三日本三级少妇99| 一区二区三区欧美精品| 波多野结衣一区二区在线| 黑人巨大精品一区二区在线| 日韩精品人妻中文字幕| 亚洲天堂美女视频| 极品久久久久久久| 性色国产成人久久久精品| 99热超碰在线| 青青草免费av| 一级片中文字幕| 免费的黄色av| 亚洲最大成人av| 美女久久久久久久久| 中文字幕一区二区人妻视频| 国产毛片一区二区三区va在线| 欧美性生交xxxxx| 亚洲视频在线a| 久久午夜无码鲁丝片| 亚洲精品911| 久久久精品成人| 亚洲高清精品视频| 精品人妻一区二区三区蜜桃| 在线视频 中文字幕| 国产性猛交╳xxx乱大交| 亚洲18在线看污www麻豆| 国产精品18在线| 亚洲 欧美 国产 另类| 国产精品久久影视| 五月婷婷欧美激情| 精品人妻少妇AV无码专区| 亚洲伦理一区二区三区| 免费观看成人毛片| 大又大又粗又硬又爽少妇毛片| 日韩综合第一页| 国产又黄又猛又粗又爽的视频| 一级做a免费视频| 久久精品亚洲无码| 91久久国产综合| 深爱激情五月婷婷| 国产在线免费av| 一级黄色小视频| 天天爱天天操天天干| 国产又黄又大又爽| 91亚洲国产成人久久精品麻豆| 青青草成人免费| 韩国一区二区在线播放| √天堂资源在线| 亚洲二区在线播放| 免费中文字幕在线观看| 成人午夜视频精品一区| 亚洲精品国产精品乱码在线观看| 青青草av网站| 久久久久久国产精品视频| 波多野结衣一区二区三区在线| 在线天堂中文字幕| 少妇激情一区二区三区| 久草国产精品视频| 国产熟女一区二区三区四区| 91精东传媒理伦片在线观看| 一区二区小视频| 日韩一级片在线免费观看| 久热在线视频观看| 国产无遮挡裸体免费视频| 亚洲女人18毛片水真多| 一区二区成人免费视频| 日韩高清免费av| 欧美 日韩 国产 在线| 久久99久久99精品免费看小说| www.伊人久久| 999在线免费视频| 亚洲欧美日韩偷拍| 中文字幕日韩经典| 在线观看中文字幕av| 婷婷丁香一区二区三区| 日韩一级片av| 日本网站在线播放| 亚洲成人网在线播放| 四虎成人永久免费视频| 国产精品不卡av| 色呦呦视频在线| 欧美一区二区三区激情| 精品国产九九九| 韩国视频一区二区三区| 国产三级国产精品| 国产色片在线观看| 国产精品一区二区人妻喷水| 国产精品久久久久久久久久精爆| 99热这里是精品| www.超碰97.com| 懂色av蜜臀av粉嫩av分享吧最新章节 | 性色av蜜臀av浪潮av老女人| 日日操免费视频| 熟妇人妻系列aⅴ无码专区友真希| 日韩免费视频一区二区视频在线观看| 欧美综合视频在线| 日韩久久久久久久久| 亚洲国产视频一区二区三区| 日本天堂网在线观看| 自拍偷拍视频亚洲| 中文字幕亚洲影院| 一级特黄aaa大片| 国产成人久久久久| 国产一区二区播放| 欧美成人一区二区三区高清| 欧美精品99久久久| 五月天激情小说| 亚洲欧美国产高清va在线播放| 亚洲免费视频二区| 成人黄色a级片| 精品视频一区二区在线观看| 日本视频www色| 中文字幕第315页| 91精品国自产在线| 国产一级做a爱免费视频| 美女又爽又黄视频毛茸茸| 天堂网在线中文| 亚洲天堂久久久久| 国产午夜手机精彩视频| 日本不卡一区二区在线观看| 国产黄色片在线| 免费av中文字幕| 欧美a∨亚洲欧美亚洲| 色呦色呦色精品| 一级欧美一级日韩| 韩国中文字幕av| 四虎影成人精品a片| 夜夜嗨aⅴ一区二区三区| 国产亚洲精品久久久久久豆腐 | 亚洲国产精品免费在线观看| www.超碰97.com| 久热在线视频观看| 中文字幕第66页| 国产视频第一页| 天堂av在线网站| 成人公开免费视频| 日韩 欧美 亚洲| 91日韩中文字幕| 欧美日韩一区二区区| 亚洲高清在线观看视频| 精品国产av鲁一鲁一区| 亚洲av人无码激艳猛片服务器| 国产成人久久精品77777综合| 日本国产在线观看| 精品人妻伦一区二区三区久久 | 亚洲aⅴ乱码精品成人区| 日韩欧美国产成人精品免费| 男人天堂视频网| 亚洲欧美综合视频| 久久精品偷拍视频| 亚洲欧美另类日本| 美国黄色特级片| 97人人爽人人| 日韩精品一区二区亚洲av性色 | 国产91在线播放九色| 青春草免费视频| www.日本精品| 五月激情六月婷婷| 国语对白在线播放| 亚洲欧美日本一区二区三区| 免费看日韩av| 国产福利小视频| 中文字幕视频观看| 人妻精品久久久久中文| 国产精品欧美亚洲| 偷拍女澡堂一区二区三区| 五月天精品视频| 精品二区在线观看| 69精品久久久| 少妇高潮久久久| 精品伦精品一区二区三区视频密桃| 中文字幕一区二区免费| 日本久久一级片| 国产一级免费大片| 99成人在线观看| 圆产精品久久久久久久久久久| 欧美 日韩 国产 成人 在线观看 | 最近中文字幕免费视频| 欧美日韩国产精品一区二区三区| 国产成人亚洲精品自产在线| 最近中文字幕av|