2

我正在使用 Squish 框架编写 Qt 应用程序的自动测试脚本。Squish IDE 中的 Spy 可以查看“spy picker”选择的 Qt 小部件的属性和方法。在 Spy 透视图中启用 Window -> Show View -> Methods。

我可以在方法视图中看到类似void setParent(QObject*)方法名称、返回和参数类型的内容。

在 Python 测试脚本的运行时,我可以获取小部件属性,例如isActiveWindow -> true,通过调用

aWidget = waitForObject("...")
aMap = object.properties( aWidget )

小部件方法可从 Python 获得,例如我可以调用:

>>> aWidget.isModal()
0

但是如何获取小部件方法签名列表,如 IDE 中的方法视图?我想出的只是

>>> dir(this)
['BackButtonPressed', 'ButtonPressed', ...

但当然它只列出方法名称而不是签名,没有声明的参数类型或返回类型。间谍以某种方式获取签名,我如何在运行时从 Python 获取它们?

4

1 回答 1

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())
于 2013-11-27T12:46:57.800 回答