iPhone UIAutomation按钮点击不会触发

时间:2010-09-14 20:48:16

标签: javascript iphone ios4 ios-ui-automation

我正在尝试使用iPhone模拟器和最新的iOS SDK 4.1在仪器中使用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}}]

1 个答案:

答案 0 :(得分: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();表示该按钮已存在。

我在检查按钮位于actionSheet上之后尝试添加target.pushTimeout(5);,以便给它一些时间来检测并点按按钮。这没有用。

然后我在检查按钮位于actionSheet上并且在点击之前立即添加了target.delay(1);。 在我的情况下,它有助于脚本现在更加强大和稳定。