首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MFC资源ID和Squish

MFC资源ID和Squish
EN

Stack Overflow用户
提问于 2019-07-04 21:16:36
回答 1查看 103关注 0票数 1

我正在尝试用Squish自动化一些GUI测试,但在Squish中不断遇到MFC资源in的问题。

我创建了一个静态标签,如下所示:

代码语言:javascript
复制
CStatic m_Status;
m_Status.Create("", WS_CHILD | WS_VISIBLE | SS_CENTERIMAGE | SS_LEFT, 
                mCfg->rectStatus(), this, 42);
m_Status.SetWindowText("42 is the answer");

当我用Squish发现这个标签时,我得到的只是:

代码语言:javascript
复制
{"container": o_Pane, "text": "42 is the answer", "type": "Label"}

但是,没有ID。由于文本不断变化,仅基于文本匹配元素并不是最优的。

在同一程序中,通过资源管理器向导创建其他标签。对于这些标签,Squish能够获取资源ID并设置正确的"nativeObject“属性。

如果可能的话,有没有办法让在源代码中创建的CStatic对象对Squish也是正确可见的,使用nativeObject属性?

EN

回答 1

Stack Overflow用户

发布于 2019-07-05 15:37:26

可以使用Spying检查object properties。一旦知道Squish看到了哪些属性,就可以使用Squish对象实名中的属性及其值来标识所需的对象。

但是,由于没有编译Squish的MFC支持,因此它通常无法访问此类is,因为它通过窗口消息传递获取有关MFC控件的所有信息。

这些ID可能是通过UI Automation公开的。如果是这样,请咨询Inspect。如果是这样的话,尝试通过Squish的UI自动化支持来识别对象。要将SQUISH_DIR\lib\extensions\win\uiautomation.ext中的优先级更改为高于SQUISH_DIR\lib\extensions\win\mfc.ext中的优先级,请使用新的测试套件(为了更好地测量和测试),从Squish启动AUT,选择对象并查看是否看到不同的对象属性,以及nativeObject属性是否是非空的(空/空意味着MFC支持提供对对象的访问)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56888820

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档