Windows技术自动化QT常见问题
下面是使用Windows技术对Qt应用进行自动化时可能会遇到的问题和解决方法。CukeTest更建议使用跨平台Qt自动化的技术来自动化Qt应用,不仅有更易用和强大的API,也有更稳定的运行效果。
Q: 无法识别Qt应用的控件类型
A: 在对Qt 4.x编写的应用进行控件识别时,有时会出现模型管理器无法识别出控件类型的情况,全部显示为Custom
类型,这是由于缺少了accessible插件,解决方案详见HOWTO:识别Qt应用的控件类型。
Q: 为什么Tree 控件的Collapse和Expand方法调用不成功?
A:: Windows自动化库为标准控件设计,也能支持基本所有的QT控件,但QT Tree控件不是标准Windows控件,因此并非所有方法都支持。TreeItem控件上的Collapse和Expand方法在QT Tree上不支持,会显示错误 “1003: CannotPerformThisOperation”. 可以调用TreeItem控件的dblClick
方法展开或折叠。
Q: QT 的 ComboBox控件的select
方法不起作用?
A:: QT的ComboBox不是标准Windows控件,并非所有方法都支持。调用时需要调用方法组合完成:
在模型管理器中,需要添加两个相关对象:1. ComboBox控件,2. ComboBox展开后的选项中的一个,即ListItem控件。
代码中:
- 调用ComboBox的
open
方法展开下拉框 - 调用getListItem,获得需要的ListItem。这里在第二个参数中,用你想要选择的name值覆盖模型对象中name值,动态获取需要的ListItem元素。
样例代码如下:
await model.getComboBox("<ComboBoxName>").open();
await model.getListItem("<ListItemNameInModel>", {name: '<list item name>'}).click();
model.getComboBox("<ComboBoxName>").open()
model.getListItem("<ListItemNameInModel>", {name: '<list item name>'}).click()
Q: QT Tab控件的Select 方法对尚未显示的Tab标签页无法Select?
A:: 未进入显示区域的Tab标签无法Select,需要点击标签页边上的左右箭头按钮,将标签页移动到显示区域然后再点击。
Q: QT 控件中识别属性较少,很多控件识别后生成的对象不能唯一标识控件,需要手动加索引,有什么好办法吗?
A:: 可以让模型管理器自动加索引。方法如下:
在选中一个控件后,”添加对象”窗口中去点击”验证唯一性”对话框。这时如果不唯一,会出现下面不能唯一识别信息。
可以点击添加索引按钮,使唯一识别。
这时会弹出成功添加索引提示框:
这时加入到模型中会添加索引:
Q: QT中Date Edit日期控件,如何设置值?
A: 可以通过先dblClick双击控件的前部,然后pressKeys输入日期内容。
Q: Qt中Table控件,如何动态的访问它的行、列、单元格?
A: 查看HOWTO: Qt中Table的自动化,获得更详细的帮助。