2016-09-26 65 views

回答

0

对于动态物体它能够更好地避免Namemapping,依靠inbuild方法,如Find()FindChild()FindAllChildren()

0

我不使用Namemapping因为我有一个类似的问题,你哪里格式的名称中我测试的桌面应用程序不断变化。我所做的是创建一个名为'Helper Funcs'的单独脚本。在这方面,我有两个功能:

function findControl(module, propertyName, propertyValue) : Object; 
var 
    m_process : Variant; 
begin 
    m_process := Sys.Process(module); 
    Result := m_process.Find(propertyName, propertyValue, 1000); 
end; 

function findChildControl(parent : Object, propertyName, propertyValue) : Object; 
var 
    m_result : variant; 
begin 
    Result := parent.FindChild(propertyName, propertyValue, 1000); 
end; 

要使用:

使用 HelperFuncs;

procedure Test1; 
var 

    frmActionForm_1 : variant; 
    edNewComplex : variant; 

begin 


frmActionForm_1 := findControl('Payroll', 'Caption', 'Company Address Details - Edit'); 

    Delay(4000); 

    edNewComplex := findChildControl(frmActionForm_1, 'ObjectIdetifier', 'edNewComplex'); 

    Delay(4000); 

    edNewComplex.Click(76, 11); 

end; 

在上面的例子中,frmActionForm_1是一个窗体,edNewComplex是窗体上的一个控件。在启动测试时,我搜索表单的标题,即“公司地址详细信息 - 编辑”。

找到表单后,我使用findChildControl搜索表单的子组件。

对于子组件,我只使用对象的名称。我通过使用他们的对象查找工具或我录制测试并转换为脚本来获得。它通常会包含您在录音中与之互动的所有对象的名称。

祝你好运。

赛斯