美文网首页软件测试相关程序员互联网科技
解决appium安卓自动化测试时安装app需要手动允许的问题

解决appium安卓自动化测试时安装app需要手动允许的问题

作者: 给你一颗小瓜子 | 来源:发表于2017-11-28 10:40 被阅读1395次

    安卓6.0以上,手机对于权限问题又加紧了一步。基本市场上能见到的手机,安装app时都需要手动允许,除非你给了一些应用市场自动安装的权限。

    appium使用的是adb install来安装应用的,手动执行adb install安装应用时也会弹窗。那么这个问题怎么解决呢?

    1. root到原生系统

    2. 手动尝试先把包push到手机上,再pm install

    注释掉appium安装:

    文件路径:/usr/local/lib/node_modules/appium/lib/devices/android/android.js

    //this.uninstallApp.bind(this)

    //this.installAppForTest.bind(this)

    然后自己写一套install/uninstall的方法,每次执行case集前调用一次。

    具体可以参考这篇文章:install/uninstall的方法

    3.线程解决

    因为appim在启动时会先检查app有没有安装,如果安装成功就不会再去安装。前提是你已经设置了"noReset": true。

    搞两个线程,一个负责install app,一个负责发送adb点击事件。一边安装一边检测是否有弹窗。

    import time

    import os

    from threading import Thread

    PATH = lambda p: os.path.abspath(

    os.path.join(os.path.dirname(__file__), p)

    )

    def installApp():

    os.popen("adb install " + PATH('../config/app_release.apk'))

    def inputEvent():

    time.sleep(5)

    os.popen("adb shell input tap 785 1280")

    def install():

    t1 = Thread(target=installApp)

    t2 = Thread(target=inputEvent)

    t1.start()

    t2.start()

    if __name__ == '__main__':

    t1 = Thread(target=installApp)

    t2 = Thread(target=inputEvent)

    t1.start()

    t2.start()

    我用了第三种方法完美解决这个问题。


    原创,转载请注明出处。

    相关文章

      网友评论

      • d6b64e57eb83:你第3个方法里面有判断弹窗吗,直接用adb点击屏幕坐标了
        给你一颗小瓜子:未判断弹窗,我是假定一定会出来。但也有可能会出现不出来的情况,所以可以自己判断一下。
      • 阿明的小蝴蝶:1 感觉不适用 root 手机费劲的功夫不如使用模拟器
        2 不做评论
        3 感觉看上去靠谱
        可能根据 3 再跟您做进一步讨论么?小弟目前刚好遇到这类问题
        给你一颗小瓜子:@阿明的小蝴蝶 可以啊,我就是用3解决的

      本文标题:解决appium安卓自动化测试时安装app需要手动允许的问题

      本文链接:https://www.haomeiwen.com/subject/jmwrbxtx.html