在用真机做自动回归、批量自动化测试、兼容性测试的时候因为各厂的定制遇到过很多不能自动化的坑,这个是个搜集帖,我会想到就加。抛砖引玉,我会定期从回复中截取更新的。
首先一定要打开 开发者选项->USB安装
,最好把 USB调试(安全设置)
也开了,吐槽下居然要小米账号登录!!!
adb install
的时候铁定弹框
有些机型的安全中心里有授权管理可以取消了USB安装管理,但是有些机型没有,通用方案是检测屏幕上是否有系统弹框 PackageInstallerActivity
如果有,通过 uiautomator
去点掉(@aizaimenghuangu)
pattern = re.compile("adb -s (.*?) +")
search = pattern.search(cmd)
oscmd = ''
if search:
serialname = search.groups()
sysstr = platform.system()
if (sysstr == "Windows"):
oscmd = 'adb -s %s shell dumpsys activity|findstr mFocusedActivity|findstr PackageInstallerActivity' % str(serialname[0])
elif (sysstr == "Linux"):
oscmd = 'adb -s %s shell dumpsys activity|grep mFocusedActivity|grep PackageInstallerActivity' % str(serialname[0])
else:
print ("Other System tasks")
# end by wsa 20160907
while timeout:
time.sleep(0.1)
if cmd.find('install') >= 0: # 小米手机安装提示未知的PC工具
# root_logger.info(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time.time())) + ' 当前命令为 ' + cmd + '\\n')
if os.system(oscmd) == 0:
root_logger.info('发现安装提示,执行命令'+'adb -s %s shell uiautomator runtest TestDemo.jar -c Install > nul' % str(serialname[0]))
create_process('adb -s %s shell uiautomator runtest TestDemo.jar -c Install ' % str(serialname[0]))
另外,既然是python,也可以考虑用 Python封装的UIAutomator
或者“刷到MIUI 16年7月前的版本”(@jojotester)
adb install
安装需要输入OPPO账号。解决方法:OPPO对市场上部分安卓市场开放安装不需要账号的权限。制作一个安卓app,包名和有安装权限的某个市场相同,在app中吊起安装界面,可以成功回避安装限制。 @zhonglinlins<= 4.4 安装即授权,>=5.0动态授权,adb pm grant
有时有用,但是国内厂牌并不全部支持(继续吐槽!)
安全中心->设置->权限隐私->权限监控