如何去做App自动化以及注意事项
个人总结一下自己做app自动化所遇到的坑,还有一些个人的心得,下面是个人的总结,希望能够给大家带来一些帮助哦,首先我们不管是在app自动化,还是web自动化,元素的定位尤其重要:个人经常使用的定位如下:
1.使用XPTH定位
普通的XPTH定位,可以拿取,class、text、resource-id、index 等等去进行定位
//*[@text='好好学习']
//*[class='ndroid.widget.ImageButton']
- 使用XPTH里面的contains写法取定位 注意:这种在定位页面元素是动态的使用最佳,传统的定位都无法进行定位,因为页面是动态的
定位 text 属性所对应的值中包含的有"好好"
//*[contains(@text,'好好')]
- 使用XPATH 组合定位 当定位到某个元素的时候,单单使用class定位,无法成功定位的时候,我们可以使用其他的属性进行组合定位,有时候也是可以的 类似于下面中间加一个 and 去组合
//*[@class='android.widget.Button' and @text='转账']
- 使用XPTH的层级定位 也就是相对定位 /.. 表示一个上一级或者下一级的意思,当想要定位某个页面元素的时候,可以使用的属性值非常的少,而且resource-id 也是动态的,如下图,这种就无法进行使用定位的。
class 也无法进行定位,可以用来定位的属性几乎没有
使用层级定位,注意:" /.. " 表示一个层级," // " 表示下面所有的元素,有时候使用" / " 表示下面某个元素的值 如果使用 " / " 不行的话就试试 " // " 例如:
- // + class 所对应的值 表示某个层级下面所有class 所对应的元素
- / + class 所对应的值 表示某个层级下面单个class 所对应的元素
//android.widget.ImageButton[@content-desc="叠"]/../../..//android'.widget.EditText
- 如果说使用层级定位下面有text的文本就可以直接这样去写:
//*[@resource-id='com.tencent.mm:id/e8y']/../../..//*[@text='通讯录]
2.还是可以使用ACCESSBILITY_ID的属性值去进行定位,前提是该元素属性值当中有:content_desc 这个属性(ps:这个属性一般是给那些:学习盲人使用的,在国外的开发会增加这个属性,国内要少一点,自带自动语音的功能) 写法如下:
self.driver.find_element(MobileBy.ACCESSBILITY_ID,"Make a Popup!")
注意:MobileBy 是继承 by方法的
在做app自动化的过程中所遇到的注意点如下
坑点1:
在设置自动化app参数 desired_caps 的时候,注意:有些app如果加了权限验证,就必须通过启动页进行启动,否则将无法启动
- 使用技巧:使用的时候先真机连接好,然后appium服务成功开启,然后输入终端terminal当中,等命令执行结束的时候,然后按几下回车,方便观看,然后在真机里面去打开app 可以看到出现的几行中有对应的信息了
adb logcat "ActivityManager:I *:s" | grep "cmp"
如果是没有加权限验证的,就可以 使用如下命令去获取
- windows 的话使用 findstr 去代替grep 其他不变
adb logcat |grep -i displayed
查询的结果如下:
坑点2:
在pycharm中,安装appium的插件的时候,注意最好安装 :Appium-Python-Client version 1 所对应的版本,我之前使用2的时候去 调用 TouchAction 触控方法的时候,就会出现提示 TouchAction 已经被停用,让我使用 W3C 如下图:
可以直接在terminal中去使用pip标注库管理器去指定安装的版本为1.3.0,这里我使用的是python3的环境,所以是pip3
pip3 install Appium-Python-Client==1.3.0
坑点3:
我们在使用appium去创建一个Desired Capabilities 的时候,像做一些需要历史记录的app自动化最好就把 noReset 的这个参数给设置上,不然的话,像我在做微信app自动化的时候,忘记设置,直接把我的聊天记录全部抹去了
如何去做App自动化以及注意事项相关推荐
- pythonapp自动化_GitHub - qdyxmas/PyAutoTest: python Autotest UI自动化 APP自动化 HTTP接口自动化...
PyAutoTest自动化平台 1.环境搭建 1.1 下载或拷贝整个PyAuthoTest到指定的目录,如D:\PyAuthoTest 1.2 安装Python2.7以及需要使用到的安装包列表如下 r ...
- android性能测试自动化,Android App自动化性能测试探究
作者:彭海波 前言 Android App的性能测试是移动测试过程中必不可少的一个环节.在我们项目组内,性能测试的过程是这样的,先设置测试场景,然后一边手工执行场景,一边通过工具获取性能数据,为了减少 ...
- 4行代码,让app自动化框架支持 webview 混合应用操作
移动端 app 自动化框架很多,但是有一些框架因为不支持混合应用测试,一直没有完全流行.比较典型的是经典的 Python 框架 uiautomator2, 这个框架简单好用,没有 appium 那样复 ...
- 十分钟弄懂最快的APP自动化工具uiautomator2
相信很多使用appium做过APP自动化的人都深有感触: appium运行慢.时间长 uiautomatorviewer定位元素时得关掉appium server 在低版本的appium上获取toas ...
- Appium+python实现App自动化登录
Appium+python实现App自动化登录 以下是个人用Appium + python写的第一个App自动化案例,仅做单页面,比较简单,后续将涉及到主功能模块化,需使用到功能时调用即可. 获取设备 ...
- appium手机APP自动化定位元素
目录 1 什么事手机app自动化,作用和特点 2 自动化原理: 3 定位元素 根据ID 根据CLASS NAME 根据ACCESSIBILITY ID Xpath 1 什么事手机app自动化,作用和特 ...
- APP自动化遇到问题总结-持续更新
**1.**app自动化页面无法使用uiautomator和appium定位,原因是因为页面做了截屏限制,如果是自己的页面可以让开发重新打包一个没有禁止截屏的apk,如果是第三方软件,那么需要获取页面 ...
- [facebook-wda]搭建iOS App自动化环境
搭建iOS App自动化环境 一.测试结构介绍 手机端的WDA Runner(WebDriverAgent)类似于appium测试框架中的 UIAutomator Server,将从客户端接收到的控制 ...
- uni app 自动化索引列表
uni app 自动化索引列表,官方推荐的第三方插件 https://ext.dcloud.net.cn/plugin?id=375 [{"letter": "A&quo ...
最新文章
- 二叉树的最近公共祖先—leetcode236
- 英语分词组_考生必看!成人高考英语大牛教你如何轻松考高分
- linux svn权限如何打开文件,如何让 SVN 或者 GIT 保留 Linux 文件权限
- java sha1加密ascii码_如何使用加密芯片完成SHA1摘要运算
- r语言plotmds_多元统计分析R语言建模| 11 多维标度法MDS
- python运行快捷键是什么_Python快捷键
- 中子射线照相检测技术
- 中控考勤机管理员破解/清除/密码/恢复出厂设置方法
- 洛谷试炼场P1035 级数求和
- Windows 0x80190001错误解决
- Unable to prase template Class Error message: Index 0 out of bounds for length 0
- 二叉树层次遍历(借助队列实现)
- 谷歌浏览器webGL实验
- 网易考拉API,根据ID取产品详情 OneBound数据
- 【华人学者风采】余家国 武汉理工大学
- python画猪头程序_用python画猪头的方法
- CBitmap Detach和DeleteObject的关系
- 信息安全技术小测试08设备与环境安全
- Wordpress搭建(初学者)
- 配置法 求解1D第二类线性的Fredholm积分方程 +MATLAB
热门文章
- android 时间颜色,android修改状态栏时间和日期颜色.docx
- 计算机到路由器用交叉线的好处,路由器与交换机连接-路由器和交换机之间是用交叉线还是用直通线联 – 手机爱问...
- 计算机组成原理中的直接映像,计算机组成原理--cache存储器的直接映像与变换...
- 程序员独特的浪漫:拿女朋友的照片做成动漫人物当头像
- 为什么计算机会出现两个用户,Win7登录时有2个账户|为什么电脑开机时有二个账户...
- 好嗨呦是谁_抖音好嗨哟感觉人生已经到达了高潮出自哪里?谁唱的?
- 机器学习:样本权重的理解
- MySQL read_only 与 super_read_only 之间的关系
- 路由器fast服务器没响应,FAST路由器复位常见问题解决方法
- 机器学习入门基础(一)