在用Silktest做自动化测试的过程中,准确唯一地识别对象是至关重要的,而这又依赖于对象有唯一准确的Tag,对于一些经常变化的对象我们应该如何定义他的Tag呢?
下面提供几种自定义Tag的方法(相对于系统提供的五种方法:Capition,Prior Text,Index,Window ID,Location)。
1、模糊代替父窗口:
对于像Save as这类的对话框,SilkTest需要我们指定其产生它的父窗口,其实在各种情况下出现的Save as对话框都具相同的GUI,我们大可不必对每一个窗口单独定义,可以用如下方法来解决这一问题:
Tag "..\Save as",其中用..代替父窗口Identity。
2、具有相同标题的网页:
对于很多网页来说,都具有相同的标题,这会导致运行时错误,因为多个网页具有共同的Tag,这时我们可以用网页的子类对象来区别它们:
Tag "[BrowerChild]#1\[HtmlText]Welcome\.."
这样我们就可以唯一定位到包含文本Welcome的网页了,但是使用这种方法也要注意,在确保其它网页不含有Welcome文本。
3、使用通配符:
有时我们引用的Tag一部分是不变的,另一部分却是经常变化的,比如记事本就是这样,这时我们可以使用通配符 *或?来匹配多个字符或单个字符,如:
Tag "Item - *"。
4、关于“整体”对象的识别:
对于像ToolBar或者由IE动态生成的Window来说,有时Silktest只能“整体”识别它们,对于内部控件不能识别,这是我们可以采用下面的方法来识别它们:
AfxWnd42 ToolBar
tag “#1”
VOID Select (STRING sTool)
@(sTool).Click()
return
Control FreeFormSelect
tag “(1:2,1:20)
Control Select
tag “(2:2,1:20)
Control Eraser
tag “(1:2,2:20)
Control FillWithColor
tag “(2:2,2:20) SilkTest只能识别ToolBar对象,我们“创建”了子对象:FreeFormSelect、Select、Eraser、FillWithColor,Tag格式为: tag “(col : ncols, row : nrows)”。
5、由函数动态生成Tag:
有时对象的Tag有规律的变化,这时我们可以用函数动态的生成它,例如:
STRING GetLastNameTag ()
if InputMode.GetText () = = “Add”
return “#1”
else
return “#2”
TextField LastName
tag “{GetLastNameTag()}。
下面提供几种自定义Tag的方法(相对于系统提供的五种方法:Capition,Prior Text,Index,Window ID,Location)。
1、模糊代替父窗口:
对于像Save as这类的对话框,SilkTest需要我们指定其产生它的父窗口,其实在各种情况下出现的Save as对话框都具相同的GUI,我们大可不必对每一个窗口单独定义,可以用如下方法来解决这一问题:
Tag "..\Save as",其中用..代替父窗口Identity。
2、具有相同标题的网页:
对于很多网页来说,都具有相同的标题,这会导致运行时错误,因为多个网页具有共同的Tag,这时我们可以用网页的子类对象来区别它们:
Tag "[BrowerChild]#1\[HtmlText]Welcome\.."
这样我们就可以唯一定位到包含文本Welcome的网页了,但是使用这种方法也要注意,在确保其它网页不含有Welcome文本。
3、使用通配符:
有时我们引用的Tag一部分是不变的,另一部分却是经常变化的,比如记事本就是这样,这时我们可以使用通配符 *或?来匹配多个字符或单个字符,如:
Tag "Item - *"。
4、关于“整体”对象的识别:
对于像ToolBar或者由IE动态生成的Window来说,有时Silktest只能“整体”识别它们,对于内部控件不能识别,这是我们可以采用下面的方法来识别它们:
AfxWnd42 ToolBar
tag “(2:2,2:20) SilkTest只能识别ToolBar对象,我们“创建”了子对象:FreeFormSelect、Select、Eraser、FillWithColor,Tag格式为: tag “(col : ncols, row : nrows)”。
5、由函数动态生成Tag:
有时对象的Tag有规律的变化,这时我们可以用函数动态的生成它,例如:
tag “{GetLastNameTag()}。