6

我只想用 UI 自动化测试我的 iOS UI,但是在向 UITextFields 输入文本时遇到了困难。文档说方法“setValue(...)”应该可以解决问题,但事实并非如此。

我总是收到这个错误:

Script threw an uncaught JavaScript error: Unexpected error in -[UIATextField_0x9952690 setValue:], /SourceCache/UIAutomation_Sim/UIAutomation-271/Framework/UIAElement.m line 1142, kAXErrorSuccess on line 15 of login.js, #0 setValue() 

代码如下所示:

var textfields = UIATarget.localTarget().frontMostApp().mainWindow().textFields();
username = textfields["username"];
username.setValue("test");

用户名字段不为空或未定义。

我的第二个解决方案是这个 JS 项目: https ://github.com/alexvollmer/tuneup_js#readme 它有一个用于文本字段的“typeString”方法,但在输入数字和大写字母时有点错误并且失败。

我正在使用 iOS6.1、仪器版本 4.6 (46000)、Xcode 版本 4.6 (4H127)。

任何帮助表示赞赏!

4

2 回答 2

10

检查以下是否适合您,

目标.延迟(1);UIATarget.localTarget().frontMostApp().mainWindow().textFields()["username"].tap(); 目标.延迟(1);UIATarget.localTarget().frontMostApp().mainWindow().textFields()["username"].setValue("test");

如果对您不起作用,请检查正确的层次结构。

于 2013-02-15T07:45:06.083 回答
0

我来到这里努力理解 UI 自动化脚本是如何工作的,因为那里的文档和示例代码确实缺乏(或者从一个非常具体的角度编写并不能解释所有情况)。

以下是关于我学到的主题的两件事:

  1. 首先,您必须在元素上启用辅助功能。我在试验中禁用了它,并且在我重新启用它之前,事情的表现非常奇怪(得到一个与你类似的“意外错误”)。因此,请确保您已打开辅助功能。但请注意,有些东西在禁用它的情况下仍然有效。例如,您仍然可以通过其名称 (accessibilityIdentifier) 查找元素,但您将无法点击它或调用setValue().

在此处输入图像描述

  1. 您必须深入了解您的应用程序层次结构。我的假设是,给一个元素 anaccessibilityIdentifier将允许我简单地查找具有该标识符的元素,如 HTML 的getElementById. 但它根本不是这样的。即使使用accessibilityIdentifier,您也必须逐级挖掘层次结构。幸运的是,您可以使用UIAElement.logElementTree()来获取有关要使用的正确层次结构的一些线索。

到目前为止,我对这个框架完全没有印象,但我的进步是如此缓慢。

于 2015-10-29T00:10:45.993 回答