我正在尝试用Squish自动化一些GUI测试,但在Squish中不断遇到MFC资源in的问题。
我创建了一个静态标签,如下所示:
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发现这个标签时,我得到的只是:
{"container": o_Pane, "text": "42 is the answer", "type": "Label"}但是,没有ID。由于文本不断变化,仅基于文本匹配元素并不是最优的。
在同一程序中,通过资源管理器向导创建其他标签。对于这些标签,Squish能够获取资源ID并设置正确的"nativeObject“属性。
如果可能的话,有没有办法让在源代码中创建的CStatic对象对Squish也是正确可见的,使用nativeObject属性?
发布于 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支持提供对对象的访问)。
https://stackoverflow.com/questions/56888820
复制相似问题