如何在桌面应用程序的TestComplete UI对象中使用名称映射?
答案 0 :(得分:0)
对于动态对象,最好避免使用Namemapping,并依赖Find()
,import { ModalModule } from 'angular2-modal';
import { BootstrapModalModule } from 'angular2-modal/plugins/bootstrap';
@NgModule({
imports: [
ModalModule.forRoot(),
BootstrapModalModule
],
declarations: [ AppComponent ],
bootstrap: [ AppComponent ]
})
export class AppModule { }
,FindChild()
等内置方法。
答案 1 :(得分: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搜索表单的子组件。
对于子组件,我只使用对象的名称。我通过使用他们的对象查找工具或我记录测试并转换为脚本得到。它通常包含您在录制中与之交互的对象的所有名称。
祝你好运。赛斯