2010-07-06 90 views
0

我正在探索iphoneOS 4.0中新近公开的框架UI自动化。有没有人使用这个框架测试他们的应用程序。我会感谢任何帮助。用于iPhone的UI自动化框架

我想测试一个示例应用程序,只包含一个文本框和一个按钮。我写了一个脚本为

 

UIALogger.logStart("Starting Test"); 

var view = UIATarget.localTarget().frontMostApp().mainWindow().elements()[0]; 
var textfields = view.textFields(); 
if (textfields.length != 1) { 
    UIALogger.logFail("Wrong number of text fields"); 
} else { 
    UIALogger.logPass("Right number of text fields"); 
} 

textfields[0].setValue("anurag"); 

view.buttons()[0].tap(); 
 

问题是没有设置textfield的值,也没有点击按钮。当我运行仪器时,只有视图(带有文本框和按钮)出现,然后注意到正在发生。

乐器中有一则讯息“发生了其他事情”。

回答

4

如果您的主窗口包含一个按钮和一个文本字段(按照层次结构中的顺序),那么您的第一行代码将返回给您UIAButton元素,因此下一行不正确,因为您试图调用一个按钮上的textFields()。

,第一部分应该是这样的:

var view = UIATarget.localTarget().frontMostApp().mainWindow(); 
var textfields = view.textFields(); 
if (textfields.length != 1) { 
    UIALogger.logFail("Wrong number of text fields"); 
} else { 
    UIALogger.logPass("Right number of text fields"); 
} 

而且在这种情况下,我觉得有测试水龙头和文本字段的方法有两种。就像这样:

textfields[0].setValue("anurag"); 
view.buttons()[0].tap(); 

或像这样:

view.elements()[1].setValue("anurag"); 
view.elements()[0].tap(); 

而我个人更喜欢使用辅助标签而不是索引获取对象。欲了解更多信息,寻找一个UIAElement类参考这里看看: UI Automation Reference Collection

-2

所有这些东西是要去工作,只有在应用程序与可访问性的东西(它自己的辅助协议提出:通过标记所有UI通过将Accessability标签设置为视图的唯一值来控制Interface Builder中的名称)。或者如果你使用iPhone标准控件。

如果应用程序不包含任何类似的内容,那么您将无法使用UI Automation做很多事情,并且只会看到320x480的空画布。

您可以查看此link了解更多详情。

例如,我工作的OpenGL应用程序未使用任何辅助功能标记构建,除了320x480空格式外,我无法通过UI自动查看任何内容。

+2

这实际上并非如此。可访问性标签对于使用UI自动化不是必需的。设置辅助功能标签允许为UI自动化编写的脚本更易于阅读和维护。您可以调用target.frontMostApp()。mainWindow()。elements()[“Login Button”]来代替调用target.frontMostApp()。mainWindow()。elements()[0]。使用标签很好,但不是必需的。 – Yetti 2012-08-16 15:19:24