7.0 启动app权限弹窗问题
这里提供两种解决方案!
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:--,记下这个坐标也是一样的!
- 打开app,准备好uiautomatorview(sdk目录下那个定位元素的玩意..),如下图所示记住这个坐标,如:
- 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权限弹窗问题的更多相关文章
- appium+python自动化47-首次打开app权限弹窗问题
前言 用真机运行appium代码,首次打开app有的手机会出现权限弹窗问题,一般这种弹窗都是在引导页前面或者引导页后面出现.权限弹窗上面的按钮都是固定的, 只需要定位到"始终允许" ...
- appium---第四个脚本,进入app,有权限弹窗的方法
1.以淘宝为例:进入首页,会弹出好几个权限弹窗 无法使用id定位 用xpath定位
- 谈谈Android 6.0运行时权限理解
前言 谷歌在2015年8月份时候,发布了Android 6.0版本,代号叫做“棉花糖”(Marshmallow ),其中的很大的一部分变化,是在用户权限授权上,或许是感觉之前默认授权的不合理,现在6. ...
- [Android]从Launcher开始启动App流程源码分析
以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/5017056.html 从Launcher开始启动App流程源码 ...
- Android6.0运行时权限(基于RxPermission开源库)
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 在6.0以前的系统,都是权限一刀切的处理方式,只要用户安装,Manifest申请的权限都会被赋予,并且安装后权限也撤销不了. And ...
- Android 6.0+ 运行时权限
1.权限被分为了普通和危险两种 2.打电话的Demo import android.Manifest; import android.app.Activity; import android.cont ...
- 使用GlobalKey启动APP
按键输入有三种:system key 音量键 global key 按下启动某个APP user key ABCD... 给安卓应用程序定义一个广播接收者,写一个BroadcastReceiver ...
- appium启动APP配置参数:
一.Android启动app python启动脚本如下: from appium import webdriver desired_caps = {} desired_caps['plat ...
- android 6.0(23)的权限管理
前言 谷歌在2015年8月份时候,发布了Android 6.0版本,代号叫做“棉花糖”(Marshmallow ),其中的很大的一部分变化,是在用户权限授权上,或许是感觉之前默认授权的不合理,现在6. ...
随机推荐
- HashMap的工作原理-hashcode和equals原理的再次深入
前言 首先再次强调hashcode (==)和equals的真正含义(我记得以前有人会说,equals是判断对象内容,hashcode是判断是否相等之类): equals:是否同一个对象实例.注意,是 ...
- 广义线性模型(GLM, Generalized Linear Model)
引言:通过高斯模型得到最小二乘法(线性回归),即: 通过伯努利模型得到逻辑回归,即: 这些模型都可以通过广义线性模型得到.广义线性模型是把自变量的线性预测函数当作因变量的估计值.在 ...
- 【洛谷P2607】[ZJOI2008]骑士
骑士 题目链接 这道题一看,似乎和舞会是一样的,然而它并没有保证是一棵树 但是,对于每个连通块,必有相同的点数和边数,这样的图一定是一棵树上加一条边 这条边一定回使图中形成一个环,这种图貌似叫“基环树 ...
- 【题解】洛谷P2421[NOI2002]荒岛野人 (Exgcd)
洛谷P2421:https://www.luogu.org/problemnew/show/P2421 思路 从洞的最大编号开始增大枚举答案 对于每一个枚举的ans要满足Ci+k*Pi≡Cj+k*Pj ...
- android(eclipse)广播机制知识梳理(三)
1:分类: 标准广播:没有先后顺序,无法被截断 有序广播:又先后顺序,可以截断 2:接收广播:首先进行注册,注册的方式有静态注册和动态注册.也就是在代码中注册和在AndroidManifest ...
- TensorFlow安装环境的误区
安装py一定要注意安装的版本,我一开始安装的3.7版本的,现在还没有支持,另外,看清楚自己电脑是32位还是64位的
- udt的java版本judt项目持续升级1.2版本
修改了一些问题,努力兼容udt4版本.具体内容查看项目更新说明: 当前项目版本1.2 地址:https://github.com/jinyuttt/judt
- 【模板】tarjan算法
tarjan求强连通分量 #include<bits/stdc++.h> #define MAX 10005 using namespace std; int dfn[MAX],low[M ...
- oracle调度中使用schedule管理调度
开始前,先说一句:作为dba应该禁止所有应用使用dbms_job. dbms_scheduler非常复杂,oracle在两本书中专门花费不少章节描述,这两本书分别是: Oracle® Database ...
- Lintcode算法
题目: 给出一组非负整数,重新排列他们的顺序把他们组成一个最大的整数. 样例 给出 [1, 20, 23, 4, 8],返回组合最大的整数应为8423201. 思路:直接交换两个数,然后判断交换之后的 ...