我发现,即使我可以设置accessibilityLabel的UISegmentedControl的部分(参见:?我设置了无障碍环境标签一个UISegmentedControl的特定段如何),我无法设置accessibilityIdentifier,这是我的项目同样重要.我需要针对一个细分市场而不管其文本和accessibilityLabel自动化目的.
例如,代码:
NSString *name = [NSString stringWithFormat:@"Item %li", (long)idx];
segment.accessibilityIdentifier = name;
NSLog(@"ID: %@", segment.accessibilityIdentifier);
Run Code Online (Sandbox Code Playgroud)
结果是:
ID: (null)
Run Code Online (Sandbox Code Playgroud)
没有异常被抛出.
有没有人深入了解为什么accessibilityLabel实施,但不是accessibilityIdentifier?
我使用iOS 4.2和Xcode 3.2.5创建了一个通用二进制文件.我正在尝试对应用程序进行一些自动化测试,因为iPad和iPhone版本之间的界面略有不同,我有单独的UIAutomation脚本.不幸的是,无论我做什么,当我点击Instruments中的记录按钮时,它总是使用iPad模拟器启动应用程序.如何强制Instruments启动iPhone模拟器?
通用应用程序在所有3个模拟设备(iPhone,iPhone(Retina)和iPad)的模拟器中运行良好.我可以通过Xcode控制Active Executable并使用指定的模拟器正确地"构建并运行/调试"工作正常.当我启动Instruments时,我选择iOS模拟器>全部>自动化,然后为iPhone选择我的自动化脚本,然后将目标设置为project-name/build/Debug-iphonesimulator/project-name.
我正在尝试使用Apple的UIAutomation为具有服务器端组件的iOS应用程序编写单元测试.为了在各种状态下设置测试服务器(以及模拟通过我的服务器进行通信的两个客户端),我想在基于javascript的测试中发出HTTP get请求.
任何人都可以提供一个示例,说明如何直接从UIAutomation javascript测试中发出HTTP GET请求,或者如何从我的UIAutomation javascript测试中调用shell脚本?
FWIW,UIAutomation运行时中缺少所有浏览器提供的大多数核心对象.例如,尝试使用XMLHTTPRequest,您将收到一个异常报告,它无法找到该变量.
谢谢!
我正在制作一个小型测试框架,它使用JavaScript模块模式在iOS上进行UI自动化测试.但是,基于#import和扩展模块,我似乎得到了奇怪的结果.
我有一个基本测试模块叫Tester-Module.js:
(function() {
var Tester = this.Tester = {};
Tester.setUp = function() {
UIALogger.logMessage('Regular SetUp()');
}
}).call(this);
Run Code Online (Sandbox Code Playgroud)
如果我在我的测试用例中导入此模块,它可以正常工作.这是测试文件tester.js(tester.js我在Instruments中导入的文件):
#import "./Tester-Module.js"
// Prints 'Regular SetUp()'
Tester.setUp();
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试Tester-Module.js在另一个模块文件中扩展模块,我就无法引用Tester对象.Tester-Extension.js扩展了以下定义的Tester模块Tester-Module.js:
#import "./Tester-Module.js"
// Outputs:
// Exception raised while running script:
// ReferenceError: Can't find variable: Tester\n
Tester.setUp = function() {
UIALogger.logMessage('Overwritten SetUp()');
}
Run Code Online (Sandbox Code Playgroud)
更新的测试用例文件tester.js:
#import "./Tester-Extension.js"
// Exception is thrown before this
Tester.setUp();
Run Code Online (Sandbox Code Playgroud)
我希望相关的问题是:
为什么我不能在里面引用Tester对象Tester-Extension.js,但可以在 …
我似乎无法弄清楚如何在Instruments中的"UI Automation"工具中保存录制的脚本.
我使用"Profile"启动我的iphone应用程序,选择"UI Automation"工具,添加"New Script"并启动脚本录制.我点击了,我可以重播脚本并观看iPhone应用程序正常运行.
如果我保存仪器的跟踪文件,它只有调试数据但没有脚本.你如何保存这些脚本以及它们最终在哪里?
谢谢!
有一段时间了,我一直在尝试研究如何从Jenkins运行UIAutomation测试 - 每次运行构建时,它都构建良好,然后运行我的仪器命令(使用与此处详细相同的命令(可以使用仪器)使用命令行?)和jenkins只是挂起,整个机器都可以,当我查看活动监视器时,我可以看到使用2GB内存的仪器进程.
当我设置jenkins时,我原来是从一个隐藏的用户那里运行它 - 这提出了一些挑战,jenkins是一个deamon而无法访问窗口服务器.然后我决定将jenkins帐户更改为普通用户,登录并从命令行运行工具 - 这工作正常..但仍然没有运气从jenkins运行它.
我已经将jenkins帐户设置为开发人员 - 尽管没有管理员
请告诉我,如果还有其他任何我可以尝试的,或者如果有人有这个成功运行你的指导将非常感谢 - 谢谢
我想获得的价值"HELLO"的UILabel在iPad模拟器中.我已启用辅助功能并将标签设置为"Label Access".但是当我调用时target.logElementTree(),名称和值都被设置为"LabelAccess",并且就apple文档而言,值字段应该包含设置的字符串(在本例中"Hello").有人知道解决这个问题吗?
PS:我使用的是最新的iOS SDK和Xcode. Apple Stack Exchange



我有一个应用程序.应用程序中有一个按钮,如果单击该按钮,将退出应用程序.我正在使用UIAutomation仪器测试应用程序.我想测试这个按钮.但是在应用程序退出后,仪器会停止发出异常.我想要做的是,在应用程序存在之后,我想重新打开应用程序并继续进行剩下的测试.有没有其他人在同一场景?如果是这样,如果您找到了解决方案,请与他人分享解决方案吗?
我目前正在自动化我们对jenkins的iOS测试.到目前为止,我没有运行单元测试,将OCUnit转换为JUnit并以Cobertura格式生成代码覆盖(大量的谷歌搜索,但没有硬问题).
但是,在创建UIAutomation工作时,我被困住了.测试成功运行(instruments从命令行调用).生成junit报告很棘手,但可能.问题是在运行UIAutomation时,不会生成代码覆盖文件.
是否有可能产生它们?如果没有,你能解释一下原因吗?
到目前为止我尝试了什么:
UIAHost. performTaskWithPathArgumentsTimeout.
编辑
使用不同的框架进行一些测试后,我意识到退出模拟器是不够的,你必须明确地exit()从应用程序调用.使用UI自动化这有点棘手,但您可以声明一个应用程序,例如my-app://exit,通过MobileSafari使用它来调用它UIAHost.performTaskWithPathArgumentsTimeout.将检查这是否足以生成文件.
我正在研究UIAutomation.我需要在应用程序处于后台时更改位置.我试过以下代码行:
var target = UIATarget.localTarget();
UIATarget.localTarget().deactivateAppForDuration(30);
target.setLocation({longitude:77.50, latitude:12.50});
Run Code Online (Sandbox Code Playgroud)
但是target.setLocation直到应用程序到达前台才会被调用.
任何人都可以告诉我如何在应用程序处于后台时更改位置.