读取目标设备上的UIAutomation的UIAApplication.setPreferencesValueForKey()设置?
在过去的几天里,我一直在玩苹果的UIAutomation框架,试图组装一套验收testing来推动我正在开发的应用程序(以BDDtypes的方式)。
我碰到的一件事是如何让SUT进入一个给定的状态,所以我可以开始我的testing,如果我需要设置一些内部状态发生。 问题是,苹果的Javascript环境没有提供任何function,我可以使用除了通过它的UI与设备通信(我敢肯定这可能是devise,但有时这是不切实际的):虽然像iCuke或弗兰克可以使用HTTP与embedded目标应用程序中的侦听服务器进行通信,但是在仪器的UIAutomation环境中没有办法做到这一点。
看看提供的API,我注意到在UIAApplication类中有一个函数,它允许我在目标设备上设置一个首选项值( 参见这里了解更多细节 ):在我看来,我可以在设备上安装一些代码可以使用KVO来观察给定的优先键的机会,然后我可以使用它作为与目标应用程序中的一些特定的testing特定的帮助代码进行通信的手段(当优先级的值被改变时进行反应)。
我开始四处游戏,看看是否可以做这个工作,但跑到砖墙上,我无法find一种方法来访问目标应用程序内由UIAutomation设置的首选项。 问题是首选项似乎设置在主机域级别(即它们在/Library/Preferences/com.mycompany.MyApp
文件中设置),而不是在特定于我的应用程序的沙箱/Library
文件夹中。
我知道肯定我设置的首选项是击中设备 – 我可以看到上述文件中的值改变,但我找不到使用NSUserDefaults访问这些值的方法。
任何人都可以阐明我应该如何访问在iOS设备上存储在这个级别(NSLocalDomain …)的偏好?
注:我意识到这是一个彻头彻尾的黑客,但不幸的是,苹果公司现在提供的环境似乎远远没有达到这个标准,所以我正在尽我所能填补空白,以代替苹果进一步的更新。 如果你在网上search,你会发现其他人有非常相似的经历,并尝试以类似的方式解决目前的缺陷。
更新 :根据这个线程有可能这是一个错误。 虽然我无法确认
我在这里也有类似的问题。
我使用自动化testing来运行我的应用程序的方式只是在实际的iOS设备(iPhone要具体)中运行它。 但是,我也发现在UIA脚本中停用的function在真实设备上不起作用。 出于某种原因,自动化无法find应用程序button并重新进入应用程序。
希望这个帮助!
- KVO修改由NSMutableArray支持的NSArray的通知
- iOS:如何知道某个媒体资源是否符合KVO标准?
- 简单types(非NSObject)上的KVO(IOS 5)
- 通知不会导致dealloc被调用
- 什么时候应该从closures的ViewController类中观察持续的Model类调用removeObserver:forKeyPath?
- 如何用Swift和KVO观察单个数组元素的更改(更新)?
- 了解iOS中的KVO
- 我怎样才能做关键值观察,并得到一个UIView帧的KVOcallback?
- KVO区分willChangeValueForKey和didChangeValueForKey – 都是必要的吗?