第二个问题的答案:ideviceinstaller。
第一个问题单靠你说的信息回答不了你。。。
额,你有把最后一幅图里面的错误拿去 google 一下吗?
这个错误原因很明显了。
另外,这种情况比较通用的解决方法应该是类似 mysql 那样把 server 做成一个 service ,通过命令控制 service 的开关。
麻烦添加头像~
麻烦按照 排版说明 修改一下排版,谢谢。
麻烦根据 排版说明 修改一下排版,谢谢。
麻烦给出详细的 appium server log(从接收到 --> POST wd/hub/session
开始)。
从这个日志里面我们只能看出 bundle id 不对。
PS:bundle id 是必须的,你没有指定的话 appium 自己会去解析 app 来获取。
出现这种问题一般是 exec 的运行环境和你平时命令行运行的运行环境不一样。
建议检查一下 exec 下环境变量、使用的用户这些是否一致?
另外,注意一下 shell 的登录式和非登录式的区别,看是否有些配置信息没有加载?
配置好环境后一条 xcodebuild 命令就可以搞定。你可以看下 http://blog.octo.com/en/automating-over-the-air-deployment-for-iphone/
相关官方文档(都是图文并茂的):
https://developer.apple.com/library/prerelease/ios/documentation/IDEs/Conceptual/AppDistributionGuide/TestingYouriOSApp/TestingYouriOSApp.html(其中缺少了选择 Developer 签名的具体步骤)
https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/AppDistributionGuide/LaunchingYourApponDevices/LaunchingYourApponDevices.html#//apple_ref/doc/uid/TP40012582-CH27-SW4
额,排版麻烦调整一下吧,现在的排版基本就是没有排版了。。。
下载 chromedriver 的两个方法都很实用!赞!
其实这个就是崩溃日志了。
你发给我我也分析不了,需要结合 app 的 . dSYM 来解析才能看到具体是哪部分代码引起 crash 。
给你两个参考链接吧:
http://stackoverflow.com/questions/22722640/getting-info-from-ips-crash-report-file?lq=1
http://stackoverflow.com/questions/1460892/symbolicating-iphone-app-crash-reports/4954949#4954949
另外,你也可以通过 libimobiledevice 实时获取真机上 iOS sys log ,里面说不定有 crash 相关 log 。使用方法可以参考 http://krypted.com/mac-os-x/use-libimobiledevice-to-view-ios-logs/
另外, 可以先告诉你结论,udid 确实可以选择设备的(至少 appium 1.3.4 及以上可以),无数人已经试验并证明了这个功能是正常的。
#1 楼 @lihuazhang angularjs 2.0 据说和 1.0 差异很大了。。。
公司竟然禁 testerhome 。。。没想到 testerhome 也会进黑名单。。。
众测确实是一种趋势,就像大公司都喜欢把没什么技术含量的那部分测试外包出去一样,测试确实有些环节对大部分公司而言成本越低越好。众测的成本比外包还低,而且还能部分起到宣传的作用,确实很吸引。
但作为自由职业估计短期内还不一定行,因为现在国内众测的报酬还不是很高,而且有些任务的报酬是以报告的有效 bug 数,而非工作量计算,报酬相对就更不稳定了。而且国外有 utest 这个最大的众测平台,报酬以美金计算,收入高很多。
不错的实践。看你的写法应该是想把操作分离出来,然后再通过非代码的方式编写测试用例是吧?
数据驱动这个目前没做过,但看你目前的实现实际上应该是数据分离吧?我的对数据驱动的理解是 不仅仅是把输入的数据分离出来,还得把数据和业务逻辑绑定,通过数据自动选择业务逻辑。例如填写销售单,不同类型的销售单会需要会有不同的业务流和不同的数据,数据驱动需要做到仅给出销售单类型和对应数据即可执行测试。
我们目前主要使用的是关键字驱动,但同样提供了简单的数据分离的方式。对于环境配置相关的数据我们分离到了一个指定的文件中,以类似 ini 的方式记录。然后用例可通过一个特殊的关键字获取这个外部文件的指定数据,实现基本的外部参数配置。
对于测试结果,个人建议框架只需要支持把测试结果导出成 Junit 格式的 xml 文件,然后你就有一大堆现成工具可以利用这个 xml 文件用来生成各种不同的测试报告了,不用重复造轮子。
对于测试案例管理(我的理解是测试用例管理,不知道对不对?),我们目前是对 testlink 进行二次开发,添加了针对自动化测试用例编写的模块(把原有的用例编写模块改了下)以及导出测试用例的接口。因此具体用例管理可以继续和以前的手工用例一样通过 testlink 进行管理。因为用例管理这块看起来简单,实际上要做到能很好地进行团队协作还是需要做很多东西的(权限管理、不同项目之间的分离、测试计划的管理等),二次开发可以减少重复造轮子。
最后,如果不想在测试工具开发这边投入太多精力或者走太多弯路,最好还是先了解一下自己想做的功能目前有哪些优秀的框架有提供,学习他们的实现架构和实现方式,这样写起来速度会快很多。在 appium 用例封装这一块个人建议学习一下 robotframework 的 Selenium2Library 和 AppiumLibrary(在里面你会了解到元素查找应该怎么封装最为简便,同时这两个库对于 robotframework 的依赖也不强,主要依赖了几个工具类和日志模块,可以很方便地分离出来),以及 Page Object 设计模式。
#4 楼 @yy_u 看起来是 selendroid 的错误,但这么少的错误信息定位不了。建议你等到能发帖时把完整 log 贴上来吧。
如果等不及,建议参考 Appium 报错后查错指南 自己排一下错吧。
赞!加油!
话说我被第一张图吓尿了。。。
额,这个是原创还是转载?如果转载最好注明一下原地址吧。
另外,排版有点乱,建议参考 https://testerhome.com/topics/2976
好强大!
你试一下直接在浏览器输入 "http://127.0.0.1:4723/wd/hub"
看有没有这样的提示信息?
That URL did not map to a valid JSONWP resource