ProxyObject 层次结构

通过扩展所有域的现有代理来开发新代理时,重要的一点是理解现有代理和层次结构,这样您可以扩展正确的代理。

有关代理类的方法和属性的更多信息,请参阅“代理 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() 来发布对象。

反馈