各位在自动化通过adb install或者pm install的时候,有没有遇到过华为或者小米或者一加手机的各种安装弹窗呢,除了手动设置,该如何解决呢?
目前自动化主流框架,python uiautomator2 或者appuim等在执行测试的时候会自动给手机安装atx或者appuim引擎,但是如果不手动的点击允许,那么会导致测试失败,这种情况改如果处理呢?
下面提供一种多线程的解决方案,亲测可行
1个线程执行安装命令,另一个线程通过dump ui的方式获取xml文件,在通过解析xml文件的节点,获取文本,然后遍历xml,如果存在弹窗,通过adb点击坐标点处理掉弹窗上的文本即可
th1 = threading.Thread(target=install_app, args=(id, apk_path))
th2 = threading.Thread(target=click_pop_window_by_xml, args=(id, '继续安装'))
th1.start()
th2.start()
th1.join()
th2.join()
def click_pop_window_by_xml(id, expect_text):
# ------------------------
# 由于处理系统安装弹窗,由于ATX UI架构会安装两个apk
# 安装apk的时候会自动弹窗,所以提前通过adb处理掉
# ------------------------
print('开始处理弹窗',threading.current_thread().getName())
nodes = parse_page_xml(id)