安卓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()
我用了第三种方法完美解决这个问题。
原创,转载请注明出处。