1.一种桌面自动化测试开发方法,其特征在于,所述方法包括:
定位到元素对象获取元素对象的父窗口必要信息及元素对象的Automation Id、名称Name、类名Class、ControlType信息;
根据父窗口必要信息获取父窗口的起始搜索的IUIAutomationElement元素对象A并作为起始搜索点;
调用findElement接口并把定位获取的元素对象的Automation Id、名称Name、类名Class、ControlType信息作为参数传入;
搜索到的精确定位的元素对象的IUIAutomationElement元素指针;
根据IUIAutomationElement元素指针的GetClickablePoint方法获取元素对象的可点击的点的坐标;及调用WindowsAPI模拟鼠标点击元素对象。
2.根据权利要求1所述的一种桌面自动化测试开发方法,其特征在于,所述精确定位的元素对象的IUIAutomationElement元素指针的搜索方法包括:通过统一为char*类型的接口接收定位传来的参数并将所有char*类型的参数转化为底层COM组件可识别的BSTR类型的参数;
根据IUIAutomation接口的get_ControlViewCondition函数创建控件视图接口的IUIAutomationCondition指针并形成第一条件接口;
根据定位获取的元素对象的Automation Id、名称Name、类名Class、ControlType信息分别创建元素对象的Automation Id、名称Name、类名Class、ControlType的IUIAutomationCondition条件接口指针并形成第二条件接口,如果元素对象的Automation Id、名称Name、类名Class、ControlType在定位器中信息为空,则对应IUIAutomationCondition条件接口指针设为NULL;
利用IUIAutomation接口的CreateAndCondition方法对第一条件接口和第二条件接口进行组合,如果相应条件接口指针为NULL则忽略;及以起始搜索点元素对象A作为起始搜索点,应用经组合得到的条件接口组合进行搜索,搜到的第一个满足条件的元素对象即确定精确定位的元素对象的IUIAutomationElement元素指针。
3.根据权利要求1所述的一种桌面自动化测试开发方法,其特征在于,在调用findElement接口搜索精确定位的元素对象的IUIAutomationElement元素指针之前,所述方法还包括:建立索引函数StartIndexing,其具体包括:定义一个map结构对象,所述map结构由SuperItem结构体和IUIAutomationElement元素对象形成,其中,所述SuperItem结构体是一个包含元素对象的Automation Id、名称Name、类名Class、ControlType信息的结构体,所述SuperItem结构体需要重载操作符以使所述SuperItem结构体可比较;
从获取到的起始搜索点元素对象A节点开始遍历父窗口下所有元素并建立索引,遍历到每个元素对象的Automation Id、名称Name、类名Class、ControlType信息和每个元素对象的IUIAutomationElement指针所指向的元素对象;
利用map结构建立key-value映射,key是SuperItem结构体的结构,所述key包含元素对象的Automation Id、名称Name、类名Class、ControlType信息,value即为元素对象的IUIAutomationElement指针。
4.根据权利要求3所述的一种桌面自动化测试开发方法,其特征在于,在建立所述索引函数StartIndexing的前提下,所述精确定位的元素对象的IUIAutomationElement元素指针的搜索方法包括:通过统一为char*类型的接口接收传来的参数并将所有char*类型的参数转化为底层COM组件可识别的BSTR类型的参数;
根据定位获取的元素对象的Automation Id、名称Name、类名Class、ControlType信息填充SuperItem结构体;及根据填充完毕的SuperItem结构体利用建立的所述索引函数StartIndexing快速获取到精确定位的元素对象的IUIAutomationElement元素指针。
5.根据权利要求1所述的一种桌面自动化测试开发方法,其特征在于,所述根据父窗口必要信息获取父窗口的起始搜索的IUIAutomationElement元素对象的方法包括:定位获取的父窗口必要信息作为参数提供给动态链接库dll接口的开始搜索函数StartSearchFrom;
调用WindowsAPI FindWindowEx函数并传入父窗口必要参数信息,从而获取当前元素对象父窗口句柄;
通过IUIAutomation接口指针的ElementFromHandle方法得到从所述父窗口起始的IUIAutomationElement元素指针;及根据从所述父窗口起始的IUIAutomationElement元素指针获取父窗口的起始搜索的IUIAutomationElement元素对象。
6.根据权利要求1或5所述的一种桌面自动化测试开发方法,其特征在于,定位获取的所述父窗口必要信息为类名class信息和标题title信息。
7.根据权利要求6所述的一种桌面自动化测试开发方法,其特征在于,所述类名class信息为Shell_TrayWnd信息,所述Shell_TrayWnd为外壳函数类,主要用于管理状态栏及任务栏。
8.根据权利要求6所述的一种桌面自动化测试开发方法,其特征在于,所述父窗口类名class信息和标题title信息的定位获取方法包括:利用IUIAutomation接口指针指向对象的方法get_ControlViewWalker获取IUIAutomationTreeWalker指针;
根据IUIAutomationTreeWalker接口的GetParentElement方法和IUIAutomation接口的CompareElements方法从控件视图树形结构得到根节点下面最近的窗口即为元素对象父窗口的IUIAutomationElement指针;
通过IUIAutomationElement接口的get_CurrentNativeWindowHandle方法得到窗口句柄UIA_HWND;
将窗口句柄UIA_HWND直接转换为HWND得到父窗口的句柄;及
根据父窗口的句柄通过Windows API GetClassNamet函数和GetWindowTex函数分别得到父窗口类名class信息和标题title信息。
9.根据权利要求1所述的一种桌面自动化测试开发方法,其特征在于,所述元素对象的Automation Id、名称Name、类名Class、ControlType信息的定位获取方法包括:通过MFC对话框窗口的OnMouseMove(UINT nFlags,CPointpoint)函数得到当前鼠标位置的CPoint;
通过调用IUIAutomation接口的ElementFromPoint方法根据当前鼠标位置的CPoint得到指向所述元素对象的IUIAutomationElement指针;及通过指向所述元素对象的IUIAutomationElement指针得到所述元素对象的Automation Id、名称Name、类名Class、ControlType信息。
10.一种桌面自动化测试开发系统,其特征在于,所述系统包括:
用C++语言开发的定位器,用于定位到元素对象获取元素对象的父窗口必要信息及元素对象的Automation Id、名称Name、类名Class、ControlType信息;
用C语言和C++语言开发的暴露C语言接口的动态链接库dll,用于根据所述定位器传入的参数搜索到的精确定位的元素对象的IUIAutomationElement元素指针以获取元素对象的可点击的点的坐标并调用WindowsAPI模拟鼠标点击元素对象;及用C++语言开发的用于生成exe文件的内核,所述exe文件包含定位函数findElement和sendkeys函数,所述定位函数findElement和sendkeys函数放在所述exe文件中的预定数据块中的预定位置,所述定位函数findElement和sendkeys函数的已知数据块地址后面为要调用函数的标记,所述标记后面为统一char*类型的函数参数,所述函数参数后面为具体函数字符。