2

UIAutomation フレームワークを使用して名前を使用して、テーブル ビュー内のセルを識別する方法を試みています。これは、インストゥルメントのエディター ビューのスクリーンショットです。

ここに画像の説明を入力

次のアプローチを試しましたが、まだ成功しませんでした。正しいまたは良いアプローチは何ですか。一般に、withName は任意の UIAElement で機能しますか?

  1. mainWindow().withName("11:00 AM")
  2. target.frontMostApp().mainWindow().tableViews()[0].cells() 1 .tableViews()[0].cells()["11:00 am"]

ハードコーディングされた位置で要素を識別することに注意してください。以下のように

target.frontMostApp().mainWindow().tableViews()[0].cells().tableViews()[0].cells()[2]

withName は Apple のドキュメントに記載されています - http://developer.apple.com/library/ios/#documentation/ToolsLanguages/Reference/UIAElementClassReference/UIAElement/UIAElement.html#//apple_ref/javascript/cl/UIAElement#withName

4

1 に答える 1

3

明確にするために、withName()onのメソッドUIAElementは、要素にその名前があるかどうかを確認するためのテストです。その場合は要素を返し、UIAElementNilそうでない場合はaを返します。

あなたが考えているのは、要素配列の結果を指定された名前の結果のみにフィルタリングするwithName()onです。UIAElementArray

あなたwithName()は窓に電話をしましたが、それはうまくいきません。これらのクエリメソッドは、要素ツリーを深く走査して物事を見つけることはしません。2行目と同じように、自分でトラバースを行う必要があります。

でも、なぜ壊れているのかよくわかりません。正しくトラバースしているようです。私の勘では、名前に余分な空白文字が隠れているか、単純な文字列「11:00am」が一致しないUnicodeが含まれている可能性があります。

これを追跡するためのいくつかの提案があります。内部テーブルビューの中間変数を作成します。これらの提案を入力する方が簡単です。

var innerTableView = target.frontMostApp().mainWindow().tableViews()[0].cells().tableViews()[0];

次に、これら2つの提案を試して、その内容を教えてください。

  1. 2番目のセルの名前の全文をログに記録して、それが何であるかを確認します。UIALogger.logMessage("Name is '" + innerTableView.cells()[2].name() + "'");
  2. それでも理解できない場合は、述語との照合を試してください。innerTableView.cells().firstWithPredicate("name contains '11:00 am'").logElement();

これらの提案のいずれかを実行するとどうなりますか?

于 2013-01-25T23:12:01.530 に答える