我也是互联网测试转嵌入式测试,多交流呀
我的 xcode 是 8.3.2,系统是 macOS sierra 10.12.4
遇到这样的报错,你先自己写一段小代码试试看会不会报错,这个报错是 appium 的输出而且是 XCUITest 报的错,应该跟 appcrawler 无关,你先试着定位问题。
我用的是 npm 安装的 appium,用 appium-desktop 也 OK 不报错的,你这个报错是 XCUITest 报错的,你看看你的 XCode 版本号是多少
@charles
有配置文件:
java -jar appcrawler-2.0.1.jar --capability udid=d231d751d21a49b9e74baa8063b0d105ce93d76b,automationName=XCUITest -p ios -c config.yml
没有配置文件:
java -jar appcrawler-2.0.1.jar -a xxx.ipa --capability udid=d231d751d21a49b9e74baa8063b0d105ce93d76b,automationName=XCUITest,platformVersion=10.1.1
都是真机运行
直接在这篇帖子里面讲一下最近使用 appcrawler 对 iOS 真机进行自动化遍历的进展吧,看看其他同学有没有遇到类似情况。定义了遍历配置的 yml 文件,因为 noReset 定义为 false,所以每次都是新装;按照我在配置文件中的定义,进入 app 首页后的操作是首先允许消息推送,然后进入登录页,输入用户名密码后点击登录。
1.但是对是否允许发送推送的系统弹框,虽然 yml 文件定义的是允许,仍然点击了 “不允许” 按钮;
2.输入了用户名和密码后,没有点击登录就结束了遍历,也没有报错。仔细看了 appcrawler 的日志,有一句日志如下:
2017-05-10 18:08:17 ERROR [Crawler.isExit.372] appNameRecord last 5 List(xx 开发版, xx 开发版, xx 开发版, xx 开发版, xx 开发版)
看了一下 appcrawler 的源代码,在 Crawler.scala 文件中 isExit() 函数体找到这样一句:
if (appNameRecord.last(5).forall(conf.appWhiteList.contains(_) == false)) {
log.error(s"appNameRecord last 5 ${appNameRecord.last(5)}")
return true
}
看来是输入密码完成后,判断是否需要退出遍历的时候中了这一句判断退出了,以至于点击登录按钮那一步根本没有进行。至于原因还不知道。
已经在真机跑起来了,但还遇到了一些问题正在看
解决了,mac 和 xcode 升级到最高版本就没问题了
在--capability 添加 automationName=XCUITest 参数试试
嗯嗯,我最近都在研究其他所以没有继续研究 sonar 了,等有空再重新试试。话说你有用到覆盖率 diff 吗?我在项目中是直接使用 lcov 的,之前也试用过 xcodecoverage,没有深入进行,后来就用 lcov 了,目前可以在 jenkins 上生成报告,考虑进一步做 diff