快捷搜索:

VS2010测试功能之旅:编码的UI测试(3)-操作对象

回首

在之前的两章分手先容了一个简单的示例, 操作动作的录制道理,经由过程改动UIMap.UItest文件节制操作动作代码的天生。想必大年夜家对编码的UI测试操作动作的录制应该有必然懂得了,在UI操作中,操作动作老是离不开详细的操作对象,例如点击,拖动,填写值等操作,老是要对文本框,或者按钮,窗体这些工具进行操作,不是凭空天生的。本章作为入门篇的着末一章,将会阐明编码的UI测试是若何识别这些工具的,并先容UIMap.UItest文件是若何天生工具识别代码。

工具的识别道理

之前我们录制的时刻,录制天生器解析了我们的操作对象,并且为我们天生了工具识别代码(也便是UIMap.UItest下节点的那部分),以便我们在回放的时刻,能够识别到我们要操作的是哪一个工具

在编码的UI测试中,工具的识别主如果同时按以下三个方面进行

1. 按工具种别:工具属于什么种别,例如是button照样textBox

2. 按关键标识属性:能独一识别该工具的属性

3. 按层级关系:工具在其父工具中的层次

下面开始进行具体先容:

一.按工具种别:

为便于理解,以web法度榜样为例,假设我们的识别代码中,写明让VS2010按WebButton识别一个工具,那么VS2010则会在页面源码中只找到那些html标签是submit”>的控件,假如识别代码中描绘的是按WebLink识别工具,则VS2010只在页面源码中找到那些是的标签。

二.按关键标识属性:

经由过程工具种别,已经能识别出来某一类的工具,在这个根基上,接下来就必要用关键识别属性进行精准标识了,我们必要找出能独一识别该工具的属性,要是一个窗体如下

这个窗体中包孕了3个button,我们想让VS2010操作到第一个Button,若何区分这些Button呢?这就要用到关键标识属性来标识独逐一个工具

关键标识属性分为两种----自身标识属性和帮助标识属性。

1.自身标识属性:

也便是属于工具的属性,例如,button拥有Name,Text,Enable,BackColor等属性,我们假设上面那个窗体的Button的各个属性如下

很显着可以发明,第一个button的Name属性和和其他的button不一样,那么可以用其作为他的关键标识属性,并且写在识别代码中,这样vs2010就可以在这些button中能独一识别他,例如,将Name=button2写到识别代码中,就可以独一识别第二个Button

假设3个button的Name一样,而BackColor不合,也可以用BackColor作为关键标识属性。

2.帮助标识属性:

在自动化测试中,还有一种属性叫做帮助标识属性,他并不属于工具的属性,但可以帮助标识工具

假设刚才那个窗体的各button属性如下:

可以发明他们的自身属性都是如出一辙的,那么怎么做才能让VS2010识别他呢?仔细察看可以发明这样一个环境

我们可以经由过程该工具是第几个工具这样的帮助属性进行标识他

比如假如要识别第3个Button,则必要在识别代码中设置其帮助标识属性“工具序号”为3

三.按层级关系:

虽然上面确定了独一工具,切实着实已经可以标识出工具了,不过实际上在识别的时刻还会按层级关系查找,例如第一章提到的一个简单的窗体

我们用录制天生器解析他的第一个文本框Tbx_uid,在自动天生的识别代码中,他们的层级关系是这样的

对应到刚才的Form,层级为:

VS2010在识别这个Textbox1的时刻,会只识别属于 系统登录Window下的Tbx_uidWindow下的Tbx_uid文本框

(注:按照老例的理解,着实应该“系统登录窗体”和“Tbx_uid文本框”只有两个层级,也便是窗体下直接便是文本框,然则VS2010默认解析的时刻,会把一个TextBox解析成两个层级,分为TextBoxWindow和TextBoxEdit,结果原先应该统共只有两级结果搞成了三级,假如仔细察看可以发明其他控件也是这样的,以是在这里纠结的同伙盼望你们看到此段后能够减轻些疑心...)

UIMap.UItest文件节制识别代码的天生

在第二章上部分已经提到,在UIMap.uitest文件中,工具的识别代码的天生部分是放在节点下的,点击天生代码后,会将其真正起感化的识别代码天生到UIMap.designer.cs下,那么他们的代码究竟是如何的呢?

以刚才那个窗体天生的代码为例,我们要识别TextBox1,假如应用录制天生器,把TextBox1填入到工具库,我们来看看他天生的识别代码(可以大略看,下面会有阐明)

UIMap.uitest文件默认天生的节点的代码

1Maps>

2UIMap Id="UIMap1">

3TopLevelWindows>

4TopLevelWindow ControlType="Window" Id="UI系统登录Window" FriendlyName="系统登录" SpecialControlType="None" SessionId="199642">

5TechnologyName>MSAATechnologyName>

6WindowTitles>

7WindowTitle>系统登录WindowTitle>

8WindowTitles>

9SearchConfigurations>

10SearchConfiguration>VisibleOnlySearchConfiguration>

11SearchConfigurations>

12AndCondition Id="SearchCondition">

13PropertyCondition Name="Name">系统登录PropertyCondition>

14PropertyCondition Name="ClassName" Operator="Contains">WindowsForms10.WindowPropertyCondition>

15PropertyCondition Name="ControlType">WindowPropertyCondition>

16AndCondition>

17SupportLevel>0SupportLevel>

18Descendants>

19UIObject ControlType="Window" Id="UITbx_uidWindow" FriendlyName="Tbx_uid" SpecialControlType="None">

20TechnologyName>MSAATechnologyName>

21WindowTitles>

22WindowTitle>系统登录WindowTitle>

23WindowTitles>

24SearchConfigurations>

25SearchConfiguration>VisibleOnlySearchConfiguration>

26SearchConfigurations>

27AndCondition Id="SearchCondition">

28PropertyCondition Name="ControlName">Tbx_uidPropertyCondition>

29PropertyCondition Name="ControlType">WindowPropertyCondition>

30AndCondition>

31SupportLevel>0SupportLevel>

32Descendants>

33UIObject ControlType="Edit" Id="UITbx_uidEdit" FriendlyName="Tbx_uid" SpecialControlType="None">

34TechnologyName>MSAATechnologyName>

35WindowTitles>

36WindowTitle>系统登录WindowTitle>

37WindowTitles>

38SearchConfigurations>

39SearchConfiguration>VisibleOnlySearchConfiguration>

40SearchConfigurations>

41AndCondition Id="SearchCondition">

42PropertyCondition Name="Name">密码 :PropertyCondition>

43PropertyCondition Name="ControlType">EditPropertyCondition>

44AndCondition>

45SupportLevel>0SupportLevel>

46Descendants />

47UIObject>

48Descendants>

49UIObject>

50Descendants>

51TopLevelWindow>

52TopLevelWindows>

53UIMap>

54Maps>

您可能还会对下面的文章感兴趣: