1

qmlプログラムを自動化するタスクが割り当てられました。私はPythonとSquishにかなり慣れていません。たとえば、テキスト要素のidプロパティを取得する方法を見つけようとしています。

Text{
id:testLabel
text:"Hello"
}

したがって、Squishで、取得したオブジェクトをキャプチャします(Spy経由)

waitForObject(":GAMES.Hello_Text")

しかし、代わりに私はそれをとしてキャプチャしたい

waitForObject(":GAMES.testLabel_Text")

これを達成することは可能ですか?そうでない場合、私がそれについて行うことができる他の方法は何ですか?

:異なる言語のテキストを比較する必要があります

4

1 に答える 1

2

診断

「実名」と「記号名」を混同していると思います。オブジェクト map に関するSquishの公式ドキュメントを確認することをお勧めしますが、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" の両方が ":GAMES" ウィンドウ内の QLineEdit フィールドであることを示しています (それ自体は、objects.map の別の場所にある実際の仕様を持つシンボリック名です)。

考えられる解決策

完全なヘルプを得るには、objects.map から関連するエントリを投稿することをお勧めします。関連するエントリは、関心のあるオブジェクトのエントリであり、おそらくそれらの直接の親です。

「:GAMES」シンボリック名で指定されたオブジェクト内の任意のプログラムによって決定された要素を探している場合、何が必要なのか正確にはわからないという警告があります。

1. 親オブジェクトを検索し、その属性を調べる

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

2. 親オブジェクトの属性を調べる

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

この場合、「testLabel_Text」は、「:GAMES」シンボリック名で指定されたオブジェクトの属性を参照する任意のテキスト文字列であることに注意してください。waitForObjectAttribute()Python のビルトイン に似ていると考えることができますgetattr()

3. 実名で知りたい情報を調べる

mytext = waitForObject("{name='testLabel_Text' type='QLineEdit' visible='1' window=':GAMES'}")
于 2013-04-09T18:53:25.380 に答える