通过扩展所有域的现有代理来开发新代理时,重要的一点是理解现有代理和层次结构,这样您可以扩展正确的代理。
有关代理类的方法和属性的更多信息,请参阅“代理 API 参考大全”。
识别测试下的控件
功能测试工具的首要任务是识别测试下的控件,并在测试下的应用程序 (AUT) 中表示出来。
Functional Tester 识别使用识别属性和层次结构的控件,并在 TestObject 映射中对其进行表示。不同控件的识别属性和层次结构可能不同。为控件开发的代理提供此信息到
Functional Tester。开发新代理的同时,您将继承每个域中的基本代理。通常,您不会覆盖这些方法,因为在基本代理中已经实现了他们。
- 识别属性
- 您可以使用 表 1 中列出的方法来指定控件的识别属性和权重。
注: 你还可以使用对象库来指定识别属性和权重。
表 1. 指定识别属性的扩展方法Java |
.Net |
Hashtable getRecognitionProperties() |
Hashtable GetRecognitionProperties() |
int getRecognitionPropertyWeight(String propertyName) |
int GetRecognitionPropertyWeight(String propertyName) |
- 层次结构
- 您可以使用 表 2 中列出的方法来指定控件的层次结构。
注: 通常,在基本代理类中实现这些方法,且无需扩展。
表 2. 指定层次结构的扩展方法Java |
.Net |
getParent() |
GetParent() |
getTopParent() |
GetTopParent() |
getChildren() |
GetChildren() |
Object getChildAtPoint(Point pt) |
Object GetChildAtPoint(Point pt) |
getOwner() |
GetOwner() |
getOwnedObjects() |
GetOwnedObjects() |
定义
您可以使用
表 3 中列出的方法来更改控件的管理特征,例如图标或描述名称。
表 3. 更改管理特征的扩展方法Java |
.Net |
String getTestObjectClassName() |
String GetTestObjectClassName() |
String getDescriptiveName() |
String GetDescriptiveName() |
String getUniqueId() |
String GetUniqueId() |
boolean shouldBeMapped() |
bool ShouldBeMapped() |
String getRole() |
String GetRole() |
String getObjectClassName() |
String GetObjectClassName() |
正在录制
录制器打开时,
Functional Tester 录制在控件上执行的用户操作。可以将这些用户操作分成鼠标交互和键盘交互。您可以使用
表 4 中列出的方法进行录制。
表 4. 录制的扩展方法Java |
.Net |
void processMouseEvent(IMouseActionInfo action) |
void ProcessMouseEvent(IMouseActionInfo action) |
void processPreDownMouseEvent(IMouseActionInfo action) |
void ProcessPreDownMouseEvent(IMouseActionInfo action) |
void processPreUpMouseEvent(IMouseActionInfo action) |
void ProcessPreUpMouseEvent(IMouseActionInfo action) |
void processPostUpMouseEvent(IMouseActionInfo action) |
void ProcessPostUpMouseEvent(IMouseActionInfo action) |
void processHoverMouseEvent(IMouseActionInfo action) |
void ProcessHoverMouseEvent(IMouseActionInfo action) |
getScriptCommandFlags() |
GetScriptCommandFlags() |
Vector getSubItems() |
ArrayList GetActionArgs(Point pt) |
Rectangle getRectangle(SubItem) |
SubItem FindSubItem(Point pt) |
回放
您可以使用
表 5 中列出的方法来查找 SubItem 的屏幕矩形或点。
注: 通常,您不需扩展这些方法,除非介绍新 SubItems。
表 5. 回放的扩展方法Java |
.Net |
Rectangle getScreenRectangle(SubItem) |
Point GetPointForSubItem(SubItem) |
验证点
您可以向控件添加更多的数据类型和属性。
- 数据验证
- 您可以使用 表 6 中列出的方法来向控件添加更多的数据类型。
表 6. 添加数据类型的扩展方法Java |
.Net |
Hashtable getTestDataTypes() |
Hashtable GetTestDataTypes() |
ITestData getTestData(String) |
ITestData GetTestData(string testDataType) |
- 属性验证
- 您可以使用 表 7 中列出的方法来向控件添加更多的属性。
表 7. 添加属性的扩展方法Java |
.Net |
Hashtable gerProperties() |
Hashtable GerProperties() |
object getProperty(String) |
object GetProperty(string) |
数据驱动
您可以使用
表 8 中列出的方法来指定应该用于数据驱动的方法。
表 8. 数据驱动的扩展方法Java |
.Net |
MethodSpecification getDataDrivableCommand |
MethodSpecification GetDataDrivableCommand |
反映支持
您可以使用 Java™ 和
.Net 从测试脚本中提供的反映支持。使用诸如 getMethods() 和 Invoke() 的 API,您可以访问底层对象上方法相关的信息,用于远程调用。此信息包含方法名称和签名。您可以使用
表 9 中列出的用于反映支持的方法。
表 9. 反映支持的扩展方法Java |
.Net |
getMethods() |
GetMethods() |
invoke() |
Invoke() |
getNonValueProperties() |
|
getNonValueProperties() 方法返回不支持的属性,这是因为值是无法跨进程边界对其序列化的对象引用。仍可以使用 getProperty() 方法来访问这些属性。如果将该值返回到测试脚本,那么将其返回为包含对 AUT 中对象引用的 TestObject。测试脚本必须调用 TestObject 方法 unregister() 来发布对象。