2013-02-12 46 views
1

我已经分配了任务来自动化qml程序。 我对python和Squish都很新颖。 我试图找到一种方式来获得一个文本元素 的例如id属性:如何使用Squish查找qml元素的id属性?

Text{ 
id:testLabel 
text:"Hello" 
} 

所以在挤流获取捕捉我获得的(通过间谍)对象

waitForObject(":GAMES.Hello_Text") 

但相反,我想捕捉它作为

waitForObject(":GAMES.testLabel_Text") 

这是可能达到?如果不是什么其他方式我可以去它。

注意:我需要的文本比较不同语言

回答

2

诊断

我想你混淆了“实名制”与“象征性的名字。”我建议检查Squish的官方documentation about the objects map,但我的理解是,Squish符号名称(以冒号开头的名称)基本上等同于变量名称。它们是用于在objects.map中查找标识符的键。

objects.map包含符号名称和Squish所称的“真实姓名”。真实姓名是可以用来查找Qt对象的匹配模式。例如,你可能在你的objects.map文件行看起来像:

:GAMES.Hello_Text {name='Hello_Text' type='QLineEdit' visible='1' window=':GAMES'} 
:GAMES.testLabel_Text {name='testLabel_Text' type='QLineEdit' visible='1' window=':GAMES'} 

正如你所看到的,这是说既有“:GAMES.Hello_Text”和“:GAMES.testLabel_Text”是内田QLineEdit的“GAMES”窗口(它本身是一个符号名称,在objects.map的其他地方有一个真实的规范)。

潜在的解决方案

要得到充分的帮助下,我建议你从你的objects.map发布的相关条目。相关条目将是那些你感兴趣的对象,可能是他们的直系父母。

如果您正在寻找由“:GAMES”符号名称指定的对象中的任意程序确定的元素,下面是三种方法,但我不确定您需要的是什么。

查找父对象,并检查其属性

games = waitForObject(":GAMES") 
mytext = games.testLabel_Text 

2.查找父对象的属性

mytext = waitForObjectAttribute(":GAMES", "testLabel_Text") 

注意,在这种情况下, ,“testLabel_Text”是涉及对象指定的属性的任意文本字符串由“:GAMES”象征性名字命名。你可以把waitForObjectAttribute()想象成类似于Python内置的getattr()

使用真实姓名

mytext = waitForObject("{name='testLabel_Text' type='QLineEdit' visible='1' window=':GAMES'}") 
+0

谢谢查找所需信息,最后我们能够证明,我们收到了前进。感谢你的帮助。 – 2013-10-26 18:19:47