我正在尝试使用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}}]
答案 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);
。
在我的情况下,它有助于脚本现在更加强大和稳定。