#2 楼 @sixleaves 对。严格的说是 XCUITest 相关的 API 。因为这个 API 可以控制任意界面(包括非这个项目的界面),所以就可以控制你的被测应用界面咯
第一,我觉得你需要转变一下思维方式,自动化测试中要求每个用例都是独立的,和手工测试的各个用例之间还能有耦合度不一样。这是前提。
第二,怎么把原来手工测试中具有耦合度的用例在自动化测试中解耦执行,其实不难。你转换一下,把原来手工的一个用例看成是自动化中的一个类。自动化用例就是这些类里面的操作的组合。
第三,至于怎么做 teardown ,我举个简单例子吧。例如 1s = 1 的 setup 中执行的内容,1t = 1 的 teardown 中执行的内容,那么执行 b(包含 12)这个用例时,实际执行顺序可以调整成 bs(即 1s)->1->2->bt(即 1t->2t) 。至于 1t 或者 2t 写什么,你就看你具体需要咯。
#1 楼 @dengwei729 目前可以在标题加个【提问】前缀表明是提问。
你能说下你在被测试设备上看到的执行情况是怎样不?
PS:代码块的 Markdown 写错了,那个不是单引号,是键盘上 tab 和 1 夹着的那个键。
没看懂,你标题是自动化部署,内容看起来更像是部署步骤?
另外,如果 Jenkins 配置你也想放到你的代码库而不需要找运维配置的话,可以试下用 Travis YML Plugin 。
XCUITest 和 XCTest 虽然同是 XCTest 框架,但具体执行方式略有不同。
举个例子,应用有一个内部变量 a ,没有直接显示在界面中,XCTest 有办法获取到这个变量 a ,但 XCUITest 就不行。
XCUITest 支持对 iOS 的任意界面进行界面自动化测试,且运行环境是在被测应用外另外开一个进程执行。你可以理解成有点类似 UIAutomation 那样,在被测应用以外控制界面,只是 UIAutomation 做了强制检测,被测应用一旦退出就自动停止(我以前用 UIAutomation 做 monkey 测试的时候,由于发送指令速度过快,有时候被测应用已经闪退了它还会继续执行一两个事件才停止)。
WDA 的实现形式是自己做一个 app ,然后启动的时候是通过执行那个应用的 UI Testing Bundle 方式启动,并在启动完成后模拟按下苹果的 home 键回到桌面。由于前面提到它支持对任意界面进行自动化测试,所以只需要让它去启动你的应用(可以根据 bundleId 启动任意应用,包括苹果系统自带的),就可以控制你的应用界面了。
如果和 Android 的 UI 自动化测试框架进行类比的话,WDA 有点类似 UIAutomator。
既然来社区发招聘,麻烦还是遵循社区规范,使用 markdown 调整下格式吧。
#75 楼 @moxiaozhou crash 了 monkey 就不会继续跑了。因为底层用的是 UIAutomation ,只要被测应用的进程不在前台运行,就无法执行 monkey 。crashMonkey4iOS 也带有 crash 后自动重新启动应用重跑 monkey 的机制。
#74 楼 @junewang1990 不客气,感谢你才对,解决了一个问题~
标题和内容感觉有出入啊,这只是 UI 自动化工具合集,算不上 远程移动测试平台 吧。。。
你用的是 Titanium ?
#6 楼 @nancy2896 输入法有办法直接输入这个符号不?
这个是什么符号?
日志请使用代码块。
你看下文档,swipe 是怎么使用?我觉得是你对 swipe 的使用不正确。
另外,这个应该是 Appium 节点的,不要发到招聘节点,这次我帮你改了。
感觉来电、短信、闹钟这种中断安装的都是等价类吧,都属于系统中断。但从原理上说,这是系统负责的事情,感觉和 app 本身没有太大关系。
另外,确实如 @addison 所说,你的测试点偏表象了,有图标不代表安装就没问题,有图标后打开就闪退的也不能认为安装没问题。
具体控件名称可以给下不?用 Swift List View
去搜索,没找到什么有用的东西。
解析整个 xml ,每个节点变成 node 对象,然后递归从你这个元素节点开始找 node 的 parent 吧?
不过搞个绝对路径有什么意义?
直接用 UIAutomation 会出这个问题不?
Appium 会自动帮你开模拟器,不需要知道当前开的是哪个模拟器。
是这个原因?