自动化工具 [收集帖] 各厂手机不能自动化的坑和解决方案

appetizer.io · 发布于 2017年06月29日 · 最后由 yunmenzhe 回复于 2017年08月03日 · 1792 次阅读
本帖已被设为精华帖!

在用真机做自动回归、批量自动化测试、兼容性测试的时候因为各厂的定制遇到过很多不能自动化的坑,这个是个搜集帖,我会想到就加。抛砖引玉,我会定期从回复中截取更新的。

自动化安装APK

小米

  • 首先一定要打开 开发者选项->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

  • 相关stackoverflow讨论

  • 或者“刷到MIUI 16年7月前的版本”(@jojotester

Moto

Oppo

  • Color OS 3以后,使用 adb install 安装需要输入OPPO账号。解决方法:OPPO对市场上部分安卓市场开放安装不需要账号的权限。制作一个安卓app,包名和有安装权限的某个市场相同,在app中吊起安装界面,可以成功回避安装限制。 @zhonglinlins
  • r9s: 每次拉取共享路径上最新的被测 apk 包运行自动化用例,但是发现在 oppo r9s 手机上每次安装被测 app 、Settings 、unlock 程序的时候会弹出密码输入框,而且需要手动点击“安装”按钮。 解决方案:使用 AccessibilityService 实现自动输入密码、点击安装按钮,步骤如下: @huangxiaojiao https://testerhome.com/topics/9468

自动化授权

<= 4.4 安装即授权,>=5.0动态授权,adb pm grant有时有用,但是国内厂牌并不全部支持(继续吐槽!)

Oppo

  • Oppo 机型在 4.4的年代(r7s)如果APP用到定位权限会强制弹框要求确认,解决办法:有一个APP叫安全中心: 安全中心->设置->权限隐私->权限监控

传送门

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 14 条回复
104 seveniruby 将本帖设为了精华贴 06月29日 22:26
7627

小米得刷低版本的MIUI16年7月前的

11797
7627jojotester 回复

唉,这种真心累觉不爱,已经收集,谢谢

11797 appetizer.io 关闭了讨论 06月30日 15:42
11797 appetizer.io 重新开启了讨论 06月30日 15:42
7d7ec7

OPPO

color OS 3以后,使用 adb install 安装需要输入OPPO账号。
解决方法:OPPO对市场上部分安卓市场开放安装不需要账号的权限。制作一个安卓app,包名和有安装权限的某个市场相同,在app中吊起安装界面,可以成功回避安装限制。

50

造福社区的帖子,赞一个!

11797
7d7ec7zhonglinlins 回复

非常感谢,已搜集

14879

😂 仔细想想我大金立(海外版)还是蛮贴心的。。。

1134

楼主知道小米手机上的输入法:搜狗输入法小米版么?
这tm就是个流氓软件啊!禁用不了,卸载不了,切换成Appium'输入法之后,一旦聚焦到录入框,自动切换回搜狗输入法小米版,严重影响自动化测试!
这个有木有解决方案?

11797
1134weamylady 回复

看看这个?如果成功了告诉一下分享给大家

5512

所有手机的安装写个uiautomator,然后自动化去点击或者输入。

1134
11797appetizer.io 回复

看看哪个?

1134
11797appetizer.io 回复

停用早就试过了,停用之后,还是会自启动~~所以才说是流氓软件!

11797 appetizer.io oppo 手机上运行 appium + python 遇到的坑 中提及了此贴 07月25日 11:27
7e59e0

重新看了,还就是第一个方案好用,提前安装,在安装的时候使用底层的uiautomator点掉出现的提示

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册