2013-02-12 48 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