我一直在为我正在编写的应用编写一些自动化脚本,并且一直在尝试使用以下功能。我能够最终正确完成它,但使用了一些不同的代码。在我看来,以下两个代码片段是相同的,但只有第一个代码片段似乎有效。我想知道为什么会有一些见解。这是我的JavaScript技能(最好是弱者),还是特定于UIAutomation的东西?
// Define some global variables -- THIS WORKS
var target = UIATarget.localTarget();
var app = target.frontMostApp().mainWindow();
var toolbarButtons = app.toolbar().buttons();
toolbarButtons["Back"].tap();
这失败了......
var target = UIATarget.localTarget();
var app = target.frontMostApp().mainWindow();
var backButton = app.toolbar().buttons()["Back"];
backButton.tap();
第二个(失败的)代码片段说我得到了按钮的零值。如果有人可以帮助指出为什么第二种方法不正确,我会非常感激。我必须多次点击后退按钮,而backButton.tap()似乎更干净。
更新:以下是失败的确切代码
// Define some global variables
var target = UIATarget.localTarget();
var app = target.frontMostApp().mainWindow();
// List everything we see
UIALogger.logStart("Logging app...");
app.logElementTree();
UIALogger.logPass();
// Function for moving into and out of every home screen option
var homeToViewAndBack = function() {
var backButton = app.toolbar().buttons()["Back"];
// Let's go down the list of buttons
app.buttons()["VideoHomeButton"].tap();
backButton.tap();
UIALogger.logPass("Basic navigation works.");
}
// Call our functions
homeToViewAndBack();
这给出了一个错误“脚本引发了一个未被捕获的JavaScript错误:无法对无效元素执行操作:来自target.frontMostApp()的UIAElementNil。mainWindow()。toolbar()。buttons()[”Back“]”。但是,上面第一个代码段中的代码就像魅力一样。
要再次确认,我将后退按钮上的文字更改为“Home”并尝试以下代码...第一次调用后退按钮有效,但第二次调用失败:
var homeToViewAndBack = function() {
var toolbarButtons = app.toolbar().buttons();
var backButton = app.toolbar().buttons()["Home"];
// Let's go down the list of buttons
app.buttons()[0].tap();
toolbarButtons["Home"].tap();
app.buttons()[1].tap();
backButton.tap();
UIALogger.logPass("Basic navigation works.");
}