干货!收藏了!
另外,多语言测试补充一点:当文字长度不一致时,UI 界面是否能正常适配。如果有自动截断,该处使用自动截断是否合适(对于英文 + 中文这类差别很大的多语言这个必测)
受益匪浅。我自己翻译了一下,有兴趣的可以来看看:http://chjvps.com/blog/?p=751
#7 楼 @601068603 对。接下来的考验的就是持久力了。
想先问一下,你一开始那个错误出现的时候 session 是开着的吗?
#2 楼 @weamylady 嗯,电脑问题的话即使你找到原因花费时间也会很长。一般查 log 都查不到的问题都可以直接换电脑试试了。
。。。别把我当大神了。。。
你这个情况我目前没遇到过,但我遇到过 adb 死活起不来的情况(输入后一直卡在那里,只有 ctrl+z 能强制退出),虽然已经弄到能把 log 打出来了,但通过 log 还是看不出具体原因。
后面时间紧,直接换台电脑解决了。
按照我目前理解,Appium 在这一部分应该只是调用了 adb,不过你提到的版本我没用过,我也不是很清楚。先 Mark 下,我晚些看看这两个版本的调用 adb 源码是怎样的。
#4 楼 @lovelorn0327 提醒一下,如果 adb server 没开的话,直接输入 adb devices 会有开 server 的信息,你要过滤掉开 server 的信息。
有具体 Log 吗?
对于你目前的需求,这个应该就够了。没必要纠结写得好不好,能用、好用最重要。
这个开源团队搭源码环境的时候很多人遇到过,原因是 appium 一个依赖包(你图中的是 utf-8-validate)在 windows 上运行需要使用 VCBuild.exe 来编译。
如果只是使用的话,直接用封装成 exe 版本的 appium 最方便,而且还能很方便地切换不同 appium 版本。
这个严格来说也不算 appium 的问题,它只是依赖了一个对 windows 不大友好的包而已。。。
有个小问题,你滑动的坐标是centreY +- 30
,这里的 30 应该可以通过计算得到(比如通过控件高度来计算滑动一个元素所需要滑动的距离),而不需要作为固定值写在方法里吧?
当然,如果你只有这个控件需要用到这个方法,写在里面问题应该也不大。
贴个文中用到的第三方库链接:http://pythonhosted.org/behave/
看完后发现没找到里面用的库的链接(我觉得这种规范性的东西应该会有第三方库实现),然后搜了一下,应该就是文中用的那个库了。
appium 入门建议先把这里的文档看一下:
https://github.com/testerhome/appium/tree/master/docs/cn
看完后你就对 appium 有一定了解了。
至于脚本的语法,你可以先学学 webdriver api,网上有很多教程的。
不懂的地方先看官方文档,这样效率最高。
从 log 看到是在这个位置开始出错的:
info: [IOS_SYSLOG_ROW ] Mar 26 11:50:55 A050002673-iPhone6 ReportCrash[2216] <Notice>: MS:Notice: Injecting: (null) ReportCrash
info: [IOS_SYSLOG_ROW ] Mar 26 11:50:55 A050002673-iPhone6 ReportCrash[2216] <Error>: task_set_exception_ports(B07, 400, F03, 0, 0) failed with error (4: (os/kern) invalid argument)
info: [IOS_SYSLOG_ROW ] Mar 26 11:50:55 A050002673-iPhone6 ReportCrash[2216] <Notice>: ReportCrash acting against PID 2205
info: [IOS_SYSLOG_ROW ] Mar 26 11:50:55 A050002673-iPhone6 diagnosticd[705] <Error>: error evaluating process info - pid: 2205, punique: 2205
info: [IOS_SYSLOG_ROW ] Mar 26 11:50:55 A050002673-iPhone6 ReportCrash[2216] <Notice>: Formulating crash report for process ScriptAgent[2205]
info: [IOS_SYSLOG_ROW ] Mar 26 11:50:55 A050002673-iPhone6 backboardd[74] <Notice>: ALS: SetDisplayFactor: factor=1.0000
info: [debug] [INST STDERR] 2015-03-26 11:50:53.978 instruments[37140:6307] Automation Instrument ran into an exception while trying to run the script. UIAScriptAgentSignaledException
用Automation Instrument ran into an exception while trying to run the script. UIAScriptAgentSignaledException
搜索,在 github 找到个类似的 issue:
https://github.com/appium/appium/issues/3687
你是不是没有打开开发者选项的Enable UI Automation
?(我不大记得中文叫什么了)?
sample code 在另一个地方:https://github.com/appium/sample-code
建议你先读文档,有个大概了解(特别是可能出现的问题和解决方案),再去跑 sample code。
否则直接跑 sample code 你会遇到很多问题不知道怎么解决。
你说得对,刚刚试了一下,就算 adb 断开了,monkey 还是会继续执行。应该它本来就是 daemon 模式执行的吧。
另外关于你之前提到的adb shell < cmd.txt
,试验了一下,确实可以用。
给个简单例子你参考:
test.bat
adb shell < cmd.sh pause
cmd.sh
monkey 10 > /sdcard/monkey.log exit
两个文件都放在电脑里的同一文件夹,记得cmd.sh最后一行是空行,否则会停在出现了exit命令但没执行的地方。
cmd.sh里面就能像写shell脚本那样任意写命令了。
#38 楼 @james88233 我又升级了。。。你看完文档后自己参考 sample code 写一写简单的脚本,你对怎么用 Appium 应该就大致了解了。
webdriver 已经封装好很多方法,你直接拿来用就好了,方法名称和用法还是挺直观的。
@uncle_mm 你的 cmd.txt 里面写的是什么?
另外,你要的是什么报告,需要先进入 shell 命令行才能得到?