【发布时间】:2013-01-29 05:15:46
【问题描述】:
我只想使用 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)。
感谢任何帮助!
【问题讨论】:
-
嗯。我可以使用 UI 自动化在我的应用程序中设置文本字段的值。您的自动化代码看起来正确。我怀疑在 Objective C 世界中有些问题。您是否使用
UITextField的自定义子类?您可以构建一个带有单个文本字段的虚拟应用程序并尝试在您的机器上设置该字段的值吗?这可能有助于追查问题。 -
在其他项目中,“setValue()”函数有效。我认为问题是由未完成的动画引起的。当用户点击文本字段时,底层视图滚动到顶部以在键盘出现时可见。 “target.delay(1)”做了我一直在寻找的,现在“setValue()”函数可以工作了。
标签: ios-ui-automation ui-testing ios6.1