iPhone Simulator と最新の iOS SDK 4.1 を使用して、Instruments で UIAutomation を使用しようとしています。問題のある JavaScript のスニペットを次に示します。
// there are sufficient delays here to make sure the view is loaded
UIATarget.localTarget().frontMostApp().logElementTree();
main.buttons()["theButton"].tap();
UIALogger.logMessage("The button tapped");
for (var b = 0; b < main.buttons().length; b++)
{
UIALogger.logMessage("Button title: " + main.buttons()[b].name());
}
main.toolbar().buttons()["OK"].tap();
UIALogger.logMessage("OK tapped");
「theButton」のボタン名は、すべてのボタンの名前をログに記録しているときに表示されるだけでなく、logElementTree にも表示されるため、Interface Builder で正しく構成されていますが、何らかの理由でタップされません。スクリプトの早い段階でタップされている他のボタンがあり、タップされていないボタンの時点でスクリプトを中止すると、シミュレーターでボタンをクリックでき、期待どおりに動作します。
編集: 上記のループの JavaScript では、main.buttons() 配列の各ボタンをタップし、ビュー上の 12 個の同一のボタンのうち 1 つだけがタップされます。
また、ご参考までに、javascript ファイルの先頭に次のコードがあります。
var target = UIATarget.localTarget();
var app = target.frontMostApp();
var main = app.mainWindow();
次に、logElementTree がログ メッセージに入れる一連のエントリからのボタン情報を示す行を示します。
4) UIAButton [name:theButton value:(null) NSRect: {{25, 93}, {74, 74}}]