1

我正在尝试通过 iPhone 模拟器和最新的 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 for 循环中,我让它点击 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

我在点击 actionSheet 上的按钮时遇到了类似的问题。我正在实际设备上执行脚本。我的代码是:

//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);在我检查按钮是否在 actionSheet 上并且在点击它之前。它对我有帮助,脚本现在更加健壮和稳定。

于 2011-02-18T10:03:11.953 回答