这里提供两种解决方案!

  1.安卓6.0+是可以直接利用uiautomator定位元素点击!这个不细说,定位方式很多种...这个等待时间大家自己定大概两到三秒即可!

    

#安卓6.0+点击方式
driver.find_element_by_android_uiautomator('new UiSelector().textContains("允许")')

  但是一般来说弹窗大多数都是好多个---利用显示等待:启动app之后,在三秒内  没0.5秒寻找一次元素,如果存在则点击,不存在则报错直接pass

  

try:
while True:
Element = ("xpath", "//*[contains(@text,'允许')]")
ac = WebDriverWait(driver, 3, 0.5).until(lambda driver:driver.find_element_by_xpath('//*[contains(@text,"允许")]'))
ac.click()
except:
pass

2.还有一种定位方式如下,亲测支持高版本,但是我没有亲自试过是否支持低版本手机的权限弹窗-----因为我不是用的这两种---个人用的方法比较简单粗暴+直接

但是呢,这里建议大家搞个低版本的手机试下,我没测是因为条件不允许,找不到低版本的手机.......希望有朋友测了之后截图留言一波,让我有个底....

try:
while True:
Element = ("xpath", "//*[contains(@text,'允许')]")
ac = WebDriverWait(driver, 1, 0.5).until(EC.presence_of_element_located(Element))
ac.click()
except:
pass
    • 然后手动给每台手机安装一遍app,并用记事本获其他玩意记下设备名称
    • 打开app,准备好uiautomatorview(sdk目录下那个定位元素的玩意..),如下图所示记住这个坐标,如:

      admin_lists={'2905bdb6':[(360,1149)],'xxxx':[(1,1)]},如果定位不到【允许】这个坐标,就手动点一下允许,按照不动,你会发现在屏幕最上面有一个坐标DX:--/DY:--,记下这个坐标也是一样的!

        

admin_list={'2905bdb6':[(360,1149)],'xxxx':[(1,1)]}
for a in admin_list:
deviceList=''.join(os.popen('adb devices').readlines())
Device=re.findall(r"(.+?)\t",deviceList)[0]
print(Device)
if a==Device:
driver.tap(admin_list[a])

      

      原理就是先把我们测试机弹出权限允许的那个坐标给记录下来,第一次安装启动的时候查询一下设备名称然后取到坐标,然后点击---这个方法也是适合多设备

方法有点捞,但是实用靠谱---另外这里不要想着去适配屏幕,这个不存在的,据我了解不同手机的弹窗样式可能是不一样的..

如果只弹出一个-直接用上面的方法就可以了,但是如果权限弹窗有多个呢:

加个方法就可以了---有多个的话,这个就得根据自己的app调试了...但是大同小异

如下所示:

admin_list={'2905bdb6':[(360,1149)],'xxxx':[(1,1)]}
for a in admin_list:
deviceList=''.join(os.popen('adb devices').readlines())
Device=re.findall(r"(.+?)\t",deviceList)[0]
print(Device)
if a==Device:
for i in range(5):
driver.tap(admin_list[a])
time.sleep(3)

  

具体应该还有很多骚方法--大家可以自己研究一下,只要能实现就可以,我个人方面对于执行效率并没有太过--(想不到词了)

这章有一定的python语法:

循环、正则、os、range、readlines、dict取值----如果这个不太懂得-建议看下 廖雪峰的python3教程---直接百度廖雪峰就可以了

7.0 启动app权限弹窗问题的更多相关文章

  1. appium+python自动化47-首次打开app权限弹窗问题

    前言 用真机运行appium代码,首次打开app有的手机会出现权限弹窗问题,一般这种弹窗都是在引导页前面或者引导页后面出现.权限弹窗上面的按钮都是固定的, 只需要定位到"始终允许" ...

  2. appium---第四个脚本,进入app,有权限弹窗的方法

    1.以淘宝为例:进入首页,会弹出好几个权限弹窗 无法使用id定位 用xpath定位

  3. 谈谈Android 6.0运行时权限理解

    前言 谷歌在2015年8月份时候,发布了Android 6.0版本,代号叫做“棉花糖”(Marshmallow ),其中的很大的一部分变化,是在用户权限授权上,或许是感觉之前默认授权的不合理,现在6. ...

  4. [Android]从Launcher开始启动App流程源码分析

    以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/5017056.html 从Launcher开始启动App流程源码 ...

  5. Android6.0运行时权限(基于RxPermission开源库)

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 在6.0以前的系统,都是权限一刀切的处理方式,只要用户安装,Manifest申请的权限都会被赋予,并且安装后权限也撤销不了. And ...

  6. Android 6.0+ 运行时权限

    1.权限被分为了普通和危险两种 2.打电话的Demo import android.Manifest; import android.app.Activity; import android.cont ...

  7. 使用GlobalKey启动APP

    按键输入有三种:system key  音量键 global key 按下启动某个APP user key  ABCD... 给安卓应用程序定义一个广播接收者,写一个BroadcastReceiver ...

  8. appium启动APP配置参数:

    一.Android启动app   python启动脚本如下:   from appium import webdriver   desired_caps = {} desired_caps['plat ...

  9. android 6.0(23)的权限管理

    前言 谷歌在2015年8月份时候,发布了Android 6.0版本,代号叫做“棉花糖”(Marshmallow ),其中的很大的一部分变化,是在用户权限授权上,或许是感觉之前默认授权的不合理,现在6. ...

随机推荐

  1. 【洛谷P1272】 重建道路

    重建道路 题目链接 一场可怕的地震后,人们用N个牲口棚(1≤N≤150,编号1..N)重建了农夫John的牧场.由于人们没有时间建设多余的道路,所以现在从一个牲口棚到另一个牲口棚的道路是惟一的.因此, ...

  2. 【题解】洛谷P3200 [HNOI2009] 有趣的数列(卡特兰数+质因数分解)

    洛谷P3200:https://www.luogu.org/problemnew/show/P3200 思路 这题明显是卡特兰数的题型咯 一看精度有点大 如果递推卡特兰数公式要到O(n2) 可以证明得 ...

  3. android(eclipse)界面控件以及活动总结(二)

    用户界面以及活动总结: (复习时忘了的特别标记了下划线,补充的用了红色) 1用户界面: ~android:id=""专门用于找到指定界面的索引 如果要在后面的程序中调用该控件,则一 ...

  4. 使用xlsx把json对象导出excel

    1,首先使用npm下载xlsx.执行命令 npm install xlsx --save import { Component, OnInit } from '@angular/core'; //im ...

  5. iOS | Swift图片剪切圆角

    我们在IOS开发中,时常需要将一些原本是方形的图片剪切成圆形或者边框是曲线的样子,表现得活泼生动一些. 注意:因为最近在尝试用Swiftl开发,所以这里的语言使用的就是Swift,OC的语法也是相近的 ...

  6. #leetcode刷题之路3-无重复字符的最长子串

    给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1:输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc" ...

  7. CF605A Sorting Railway Cars(递推)

    题目描述 An infinitely long railway has a train consisting of n cars, numbered from 1 to n (the numbers ...

  8. python 用selenuim判断页面是否全部加载完成,并且加上最大时长,超过时长报错

    STR_READY_STATE = '' time_start = time.time() while STR_READY_STATE != 'complete': time.sleep(0.001) ...

  9. 简单使用PuTTy登录centos虚拟机

    博主刚刚开始学习Linux,想通过写博客的方式加深对linux学习的记忆 使用虚拟机安装精简版的linux后发现窗口字体太小,于是就想着通过PuTTy登录的方式解决 简单安装linux后 将linux ...

  10. Java反射的两种使用方法

    1.创建User.java package com.tao.test; public class User { private String name; private int id; public ...