当前位置:   article > 正文

UIAutomation - 从寻找一个对话框说开去_uiautomation 对话框

uiautomation 对话框

    故事的开始,是这样的。。。

   

    我在对一个功能进行测试,测试的目的就是获得期待的对话框,并且验证对话框中的内容。有一点值得提及,对话框的出现是没有任何规律的,这就意味着需要等待很长的时间才能看见期待的对话框;或者对话框的出现是非常频繁的,这意味着测试用例的书写,是为了验证各种不同的对话框。

 

    时间久了,我在也无法忍受等待与平凡的手动验证,这让我感觉很是乏味。但是,转念一想,毕竟自己非常熟悉软件自动化测试,干嘛留着这么多手动测试用例,和恼人的点击给自己?于是,就有了下面篇幅 --- 通过UIAutomation查找由应用程序产生的对话框(MessageBox)。

 

(一) 准备工作

       (0) 自己写个Windows Form程序,添加一个Button,为Button添加Click事件,弹出MessageBox。

       (1) 新建一个C#控制台应用程序

       (2) 添加应用dll -> UIAutomationClient,UIAutomationType

       (3) 下载一个UISpye。

 

(二) 你需要知道的一些东西

    (1) C#语法。别告诉我你不知道这个?基本的总该懂点吧?好吧,C语言懂么?

    (2) UIAutomationClient。提供客户端的一些API,说简单些这个.dll可以让你与应用程序交互。

    (3) UIAutomationType。包括一些控件的类型信息,如按钮,窗体,复选框等等。

    (4) Control Type。代表一个控件的类型。如按钮,树视图等等。

    (5) Control Parttern。代表一个控件的模式,比如下拉列表是Control Type,但是它的下拉展开列表选项就是Control Pattern了。

    (6) AutomationElement。UIA中将所有的控件看作是AutomationElement,所有的UI在windows里面表现为一个树型结构,根节点是桌面。

 

(三) 让我们开始吧!

    (1) 编写一个函数,通过窗体的名字来获得窗体的一个AutomationElement对象。

 

 

    解释一下,创建了两个PropertyCondition,用于生成属性条件。这里定义了两个,名字属性以及类型属性,并将两个属性组合起来, 最后找到第一个符合条件的元素。

 

    (2) 再写个函数,通过元素的AutomationId获得一个AutomationElement对象。

 

 

 

    解释一下,同上。

 

    (3)  基本的工作都做完了,下面可以进行应用了。

           a) 把先前写的那个Windows Form程序打开,点击按钮,让MessageBox弹出来。

           b) 调用GetWindowsByName,获得窗体。

 

 

        解释一下,AutomationElement.RootElement即代表了桌面,也即是根节点。“Form1”即是窗体的名字。如果不知道窗体的名字,那么UISpy就派上用场了,你所需要做的就是启动UISpy,展开Form1节点,后续的就不用我多说了吧!

   

          c) 找到对话框。

 

 

          d) 找到OK按钮。

 

 

        解释一下,“65535”这是ok按钮的AutomationId,具体的ID我记不大清了,非常抱歉,个人电脑上没装UISpy。现在好了,你应景获得了OK按钮了,接下了就是要点击它。是不是感觉很酷呢?(我听见有人说没有了,哈!)

 

          e) 获得InvokePattern。

 

 

        解释一下,需要解释么?所有你不懂的,msdn一下你就上当,呵呵。

 

          f) WOW~~是不是很酷,这真是太棒了。

 

 

好了,我也要睡觉了,晚安!

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号