兄 dei,咱敢不敢用 markdown 啊,看的很累啊。
首先你的多线程装载有问题:
t1 = threading.Thread(target=get_monkey())
把 get_monkey 后面的括号去掉,应该是 t1 = threading.Thread(target=get_monkey)
线程的参数是函数,而不是函数的返回值,要不当程序执行到你的那句话时,他要把 get_monkey 函数执行结束,得到 None 返回,把 None 作为参数传给 threading.Thread 类。
“但是感觉在这个行业卡住了,公司也没人可以询问的,其它测试的都是手工功能测试的”
看你是个求上进爱钻研的人,我觉得你在你们公司的测试里已经天花板了,如果新公司有个不错的自动化或者测试开发团队,个人建议你跳过去。如果喜欢做开发,有机会可以考虑转开发。
reboot_page 这个变量很危险,在平时编程的时候谨慎这么写,很容易因为没有赋值再引发异常。
没有执行 except 部分说明 try 语句正常执行了或者语句不会引发异常。
从出错看,想让 except 执行 reboot_page = reboot_response.read() 这句得放到 try 里。
随车放置一个 GPS 轨迹记录仪,跑完取出记录仪的数据绘制轨迹,验证和你们后台轨迹是否重合。
停留在这个界面没有报错说明 uiautomator 测试机端的服务已经运行了,保留控制台不要关闭,执行你的测试代码试试。
一开始我也经常遇到 rpc server not start 的错误。
我的解决办法是在测试用例执行前起一个线程,这个线程强制启动 uiautomator 的服务,命令 adb shell am instrument -w com.github.uiautomator.test/android.support.test.runner.AndroidJUnitRunner,你可以在命令行下先试试是否好使。
我这里一切正常,供参考。
可以用 UFT,就是以前的 QTP,惠普家的。
不过根据楼主的情况推荐试试 sikuli,应该可以满足你的需要。
恭喜楼主的帖子被公众号推了。
我也贡献个,以微信为例,其它应用替换包名:
adb shell
monkey -p com.tencent.mm -c android.intent.category.LAUNCHER -v -v 0|grep Using
打印出有 launcher 属性的 activity,对已安装的应用有效。
好想去,可惜杭州太远,不知道有没有人录像分享。
没遇到,无从下手。参考这篇帖子仔细按步骤检查下吧。
https://testerhome.com/topics/5483
见笑了,我的理解不用 string 的内置函数,in 好像不是,find 就不同了。
@shixue33 楼主看看这个行不?话说楼主的 case 真全,我忘了考虑 b 为空,一直死循环。
def split_loop(a, b):
if not isinstance(a, str) or not isinstance(b, str) :
raise TypeError("one of them not string.")
while b in a:
if a == '' or b =='':
return a
for i in range(len(a)-len(b)+1):
if a[i:i+len(b)] == b:
if i == 0:
a = a[len(b):]
elif i == (len(b) - len(b) -1):
a = a[:i]
else:
a = a[:i] + a[i+len(b):]
return a
遇到过类似问题,楼主试试。
在命令下输入 adb version 看看是什么,如果不是 SDK 里的版本(例如楼主的是 1.0.32),那么可能是之前 XX 手机同步助手之类在 system32 留下余孽,低版本(例如 1.0.26)好像 android4.0 以上已经不兼容。
然后 where adb,找到删掉。如果是这个原因,以后建议配置 adb 环境变量时将将 platform_tools 的路径往最前放。
楼主说 eclipse 可以找到但是命令行找不到很有可能是这个原因。