1

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}}]
4

1 に答える 1

1

アクションシートのボタンをタップすると、同様の問題が発生しました。実際のデバイスでスクリプトを実行しています。私のコードは次のとおりです。

//check that action sheet is on the screen
    app.actionSheetIsValid();

//check that the button is on the actionSheet
    actionSheet.actionSheetButton("Exit");

//touch Exit button
    actionSheet.tapActionSheetButtonByName("Exit");

すべての機能が実行されて通過しますが、ボタンは押されていません。 logElementTree();ボタンがあることを示します。

target.pushTimeout(5);ボタンを検出してタップする時間を与えるために、ボタンがactionSheet上にあることを確認してから追加しようとしました。これは役に立ちませんでした。

次にtarget.delay(1);、ボタンがアクションシート上にあることを確認した直後、タップする前に追加しました。私の場合、スクリプトはより堅牢で安定しています。

于 2011-02-18T10:03:11.953 に答える