Tag: ios ui automation

如何通过UIAutomation处理“_APPNAME_想使用您的当前位置”警报

好吧,这让我疯狂。 我有一个小的CI构build系统运行。 我正在使用UIAutomation进行应用程序的UItesting。 由于应用程序使用CoreLocation,应用程序第一次启动时,我得到一些警告,要求我确认我想要跟踪我的位置。 这将是伟大的,所有,但警报不是我自己的应用程序的一部分,我不能使用UIAutomation接口。 有没有任何解决scheme来确认这个警报没有手动录入button。 谢谢。 PS摆脱testing版本的CoreLocation不是一个选项。

真实设备上的Appium检查员 – iOS

我正在为我的iOS自动化testing评估Appium。 作为其中的一部分,当我select我的设备目标作为iPhone模拟器时,我能够成功地执行appium元素检查器。 但是当我瞄准真实的设备时,我无法调用元素检查器。 我已经使用开发configuration文件签署了我的应用程序,并且能够从Xcode 5安装并运行我的应用程序。所以我的应用程序安装程序看起来没问题,因为我可以运行我的应用程序。 然后,我将Appium.app GUI中的所有细节configuration为捆绑ID,设备等,并启动了appium服务器和检查器。 当检查器启动时,我的应用程序在设备上成功打开,但它没有做任何进一步的行动,几秒钟后,我得到一个stream行“请确保appium服务器正在运行,目前正在设置APP_PATH ……. “ 我调用了一些debugging日志,我无法从日志中找出问题所在。 附加日志 info: Welcome to Appium v1.2.0 (REV e53f49c706a25242e66d36685c268b599cc18da5) debug: Non-default server args: {"app":"com.bharathapp.npuzzle","udid":"a3c3ccbed22942bd7866cbf3751363004acec0a8","address":"127.0.0.1","sessionOverride":true,"fullReset":true,"deviceName":"iPhone Retina (4-inch 64-bit)","orientation":"Portrait","showSimulatorLog":true,"defaultCommandTimeout":7200} info: Appium REST http interface listener started on 127.0.0.1:4723 info: LogLevel: debug info: –> GET /wd/hub/status {} debug: Appium request initiated at /wd/hub/status debug: Request received with params: […]

如何使用UIAutomation在Web视图的文本框中input文本

我的iOS应用程序有一个用户名和密码文本框的login页面。 这些文本字段在Web视图中。 我正在尝试使用UIAutomation自动化login过程。 我知道使用UIAutomation在Web视图中处理内容是非常棘手的。 我可以使用target.tap({x:100, y:200});来点击文本字段target.tap({x:100, y:200}); 但是我想让UIAutomation在点击字段后input文本。 我怎样才能做到这一点?

UIAutomation:Alert视图上的取消button被轻敲而不实际执行

我在UIAutomation面临这个奇怪的问题。 我正在检查一个警报。 在那里,我正在尝试logging警报标题和警报消息。 我的代码是这样的: UIATarget.onAlert = function onAlert(alert) { UIALogger.logMessage("alert Shown"); UIALogger.logMessage(frontApp.alert().name()); UIALogger.logMessage(frontApp.alert().staticTexts()[1].value()); } var target = UIATarget.localTarget().frontMostApp().mainWindow(); target.scrollViews()[0].buttons()["saveB"].tap(); UIATarget.localTarget().delay(2); 我不在点击取消button在警报解雇它。 但是,它正在自动挖掘。 我不知道为什么。 即使在logMessages中,我也看到了 target.frontMostApp().alert().cancelButton().tap() 这一行自动执行。 我的脚本文件中没有这行。 这是在iOS的错误?

UIAPickerWheel.selectValue()不适用于UIDatePicker中的文本值

我创build了一个简单的项目,使用包含mode = Date的UIDatePicker的故事板(以便date显示为“November”“28”“2011”)。 在仪器用户界面自动化我想设置各个date选取器轮的值。 我可以成功使用selectValue()方法来设置包含数字值的车轮,但不能设置月份的文本值,例如“November”。 这工作.. target.frontMostApp().mainWindow().pickers()[0].wheels()[1].selectValue(12); 但是这不.. target.frontMostApp().mainWindow().pickers()[0].wheels()[0].selectValue("November"); 我得到的错误: Script threw an uncaught JavaScript error: – selectValue is not supported on a picker with undefined values 我做了一个UIATarget.localTarget().frontMostApp().logElementTree() ,可以看到这个值是正确的: UIAPickerWheel:value:November rect:{{1,142},{146,216}} 请任何人都可以build议我可能做错了,非常感谢。

通过Instruments命令行在多个iOS设备上运行UIAutomation脚本

有没有办法在多个连接的iOS设备上运行UIAutomation脚本? 目前我使用仪器与-W切换每个设备的UDID? 我很欣赏你的想法。

UI自动化testing:如何selectUIAPickerWheel值?

我试图为我的iPhone应用程序编写一些自动化testing时遇到了障碍。 从文档判断,我觉得这应该select我的UIPickerView的第一个组件的第一行: var picker = UIATarget.localTarget().frontMostApp().mainWindow().pickers()[0]; var aWheel = picker.wheels()[0]; var someVals = aWheel.values(); aWheel.selectValue(someVals[0]); 但相反,我得到以下错误,login仪器: Exception raised while running script: – selectValue requires a valid value 任何想法,我可以 在我的UIPickerView单元/组件上设置可预测的值? 目前,他们都使用自定义的UIViews,而不是标准的标签。 要么 以某种方式从我现有的单元格获取一个值的数组遍历? 我在这里错过了什么?

读取目标设备上的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,你会发现其他人有非常相似的经历,并尝试以类似的方式解决目前的缺陷。 更新 :根据这个线程有可能这是一个错误。 虽然我无法确认

UIACollectionView单元vs visibleCells

我正在尝试在xcode 4.5中使用自动化编写一个testing脚本。 我有一个UICollectionView ,我想点击一些目前不可见的单元格。 根据文档 ,我应该期望cells返回集合视图中的所有单元格,而visibleCells只返回当前可见的单元格。 相反,我所看到的是单元格只返回当前可见的单元格,并调用visibleCells停止脚本'undefined' is not a function (evaluating 'collection.visibleCells()') var target = UIATarget.localTarget(); var collection = target.frontMostApp().mainWindow().collectionViews()[0]; UIALogger.logMessage("Looking in collection: " + collection); UIALogger.logMessage("Cells: " + collection.cells() + " length " + collection.cells().length); UIALogger.logMessage("Visible cells: " + collection.visibleCells()); 上面的代码返回右边的UICollectionView ,第二个日志行打印: Cells: [object UIAElementArray] length 12 尽pipe我在集合视图中有100个项目,第三个日志行崩溃脚本。 这是一个文档/ UIACollectionView错误? 任何想法如何告诉自动滚动,直到它看到名为“我的单元格”的单元格? 我试过使用someCell.scrollToVisible ,但我需要有单元格来做到这一点,我没有,因为我不能从单元格中获取它。 […]

即使应用程序退出,如何使用UIAutomation仪器继续testingiOS应用程序?

我有一个应用程序。 应用程序中有一个button,如果点击,该button将退出应用程序。 我正在使用UIAutomation仪器testing应用程序。 我想testing这个button。 但是,应用程序退出后,仪器停止发出exception。 我想要做的是在应用程序存在之后,我想重新打开该应用程序并继续进行其余的testing。 有没有其他人在相同的情况? 如果是这样,你可以请分享的解决scheme,如果你有任何发现?