我使用Squish框架编写Qt应用程序的自动测试脚本。 Squish IDE中的间谍可以查看由“间谍选择器”选择的Qt小部件的属性和方法。在Spy透视图中启用Window - >显示视图 - >方法
我可以在方法视图中看到类似void setParent(QObject*)
的内容 - 方法名称,返回和参数类型。
在Python测试脚本的运行时,我可以通过调用
来获取小部件属性,例如isActiveWindow -> true
aWidget = waitForObject("...")
aMap = object.properties( aWidget )
可以从Python获得Widget方法,例如我可以调用:
>>> aWidget.isModal()
0
但是如何获取窗口小部件方法签名列表,如IDE中的方法视图?我想出的只是
>>> dir(this)
['BackButtonPressed', 'ButtonPressed', ...
但当然它只列出方法名称而不是签名,没有声明的参数类型或返回类型。间谍以某种方式获取签名,如何从Python中获取它们?
答案 0 :(得分:3)
为了获取窗口小部件的方法签名,您可以使用其元对象信息。例如,下面是打印小部件所有公共插槽(方法)签名的Python脚本(Squish测试脚本):
widget = waitForObject(':Test Widget')
metaObject = widget.metaObject();
methodCount = metaObject.methodCount()
for x in range(0, methodCount):
method = metaObject.method(x)
test.log(method.signature())