【待考察】Appium使用技巧,助你快速入门移动端自动化!
Appium使用技巧,助你快速入门移动端自动化!
关注并置顶【柠檬班】的小哥哥小姐姐
“猪”年行大运
说说最近研究移动端的自动化
移动端的自动化,appium是个不错的选择。
优势就不必多讲了,直入主题,方便大家获取自己想要的知识。
如下:第一步就是各种配置的键值怎么获取,
类似这个
-
1
-
启动项获取
一:设备id和android版本号
获取系统版本:
adb shell getprop ro.build.version.release
获取系统api版本:
adb shell getprop ro.build.version.sdk
二:获取apk相关信息
包名、启动Activity什么的,可以使用aapt工具,要自己下载aapt.exe和配置环境变量
三:代码实现
大概如下:
注意要加这个属性才能支持中文
-
2
-
使用deskto
一:录制脚本
这真的是一个很实用的功能。
他似乎解决了我们一个大问题,那就是该使用哪个API的问题以及脚本的编写规范的问题。
对于初步入坑的小伙伴来说是一个很好的参考。
脚本录制功能就是那个眼睛图标,如下图:
点击该按钮以后如下图:
然后就可以在左边随便对App进行操作了,
此处我进行的操作有:
●点击输入框
●点击Alert
●滑动滑动条
●滑动屏幕
●点击软键盘并输入文本(这里我选择是Python语言)
这时候Inspector生成的脚本是非常简单的,只是对你操作的步骤进行记录,还不能执行,
这段脚本如下:
这只是Inspector默认生成的极简脚本,
善良的Inspectory为我们提供了一个功能那就是将极简脚本变成可执行脚本,
操作如下图:
生成可执行脚本:
二:功能介绍
●滑动屏幕:滑动屏幕
●坐标点击:可以通过tap进行点击(非原生native不可使用)
●刷新页面:实时获取页面元素
●搜索元素:判断页面元素是否存在,或者调试搜索条件及页面元素有几个等等
●右击,点击inspect element
可以看到当前页面的xml
-
3
-
入门指南
AppiumDesktop真的是一个好东西:
一:首先他可以定为元素信息(这里所说的元素是指App上的空间)
这一点它和Android自带的uiautomatorviewer一样,
但是AppiumDesktop可以定位iOS和Android两个操作系统的App;
二:还有一点他可以录制脚本
这真的就很牛逼了。
脚本语言还可以自己选择,比如我选择使用Python语言,那么录制出的脚本就是Python语言的。
但是对于这一点上官网说了,这个功能只做学习的工具,
不能够作为代码生成器
(In sum, it is a learning tool, not a robust code generation feature, and should be used as such.)。
上图就是AppiumDesktop Inspactor启动以后的样子,
接下来咱们就讲讲怎么用这个神秘的AppiumDesktop。
-
4
-
什么是AppiumDesktop
一:AppiumDesktop
有人说AppiumDesktop是Appium新版的叫法,也就是在Xcode8之前和之后的叫法。
因为Xcode8之前自带的自动化测试框架叫做uiAutomation,
Xcode8之后完全弃用了这一框架,开始使用XCUITest,
这导致Appium大修其下层机制,以使用Facebook的WebDriverAgen,
也就是从这个时候在用Appium测试iOS应用的时候必须在iPhone手机上首先安装一个应用
WebDriverAgentRunner
也就是通过这个应用来启动我们被测应用。
所以AppiumDesktop不是Appium。
AppiumDesktop启动以后的页面是这样的:
二:以iPhone 7 Plus模拟器为例进行讲解
●platformName:因为用的是iOS手机
●platformVersion:和实际模拟器版本一致,我的模拟器是10.3版本
●deviceName:我是用的iPhone 7 Plus,
你也可以填写iPhone Simulator,会启动一个默认的(iPhone 6)模拟器
app:所要安装的app这里安装的是官方提供的一个Demo。
当然也可以安装自己待测app,但是就不一定是text了(可能是filepath)
noReset:是一个bool值,选TRUE。
如果想要使用真机,必须再加一个字段udid,是text类型。
通过终端获取已连接电脑的iPhone的udid方法:
三:配置好这些信息以后点击Save As...进行保存
保存以后以备日后使用(如果需要),这些信息被保存在“Saved Capability Sets”里。
然后点击Start Session就可以启动 Inspector了,这个过程比较慢,需要稍等几分钟。
然后就会出现文章第一个图所示的窗口。
-
5
-
定位元素信息
写Appium脚本的最重要的一个信息是定位元素,获取元素的ID或者xpath等等类似的信息。
01 首先要点击Inspector最左边一栏的Select按钮
02 然后再去点击所要获取信息的元素即可。
03 当元素突出显示时,其信息将显示在Inspector右侧的详细视图中。
04 有些是用 accessibility id 定位,有些是xpath定位或者其他的定位信息,但是在iOS应用上Appium推荐使用accessibility id 来定位一个元素信息。
05 在Inspector窗口的中间是您的应用程序的层次结构,表示为XML。
-
6
-
页面(元素)
一:滑动页面(元素)
现在可以定位当前页面的元素了,但是怎么滑动到下一个页面或者怎么滑动页面上的滑动条(slider)呢?
二:选中Swipe
模拟在手机上的操作手势,从起点到终点各点击一下,就实现了滑动。
三:点击某一个元素
如果我们想要点击某一个元素进行下一步操作,比如在输入框内输入文本或者弹出一个alert该怎么操作呢?
四:选中Tap
然后再去点击textfield或者alert我们就可以进行下一个操作了。
如果想要定位alert上的元素信息,那就在alert弹出的时候在切换到Select,
然后点击想要定位的元素就行了。
本文转载自柠檬班社区,
未经允许谢绝转载
http://www.lemfix.com/topics/130
- END -
今天的分享就到这里了
看完本文有收获?请转发分享给更多人
好看7
写留言
- 1red最近刚好需要,这个简直就是救星,网上都没有这么详细的,大爱柠檬班作者以后有任何问题,可以在评论区留言,或者是加开开老师微信:1397658968
- 心若向陽,無謂悲傷如何领取皮箱作者可以参加我们的打卡活动哦,详情可加小米微信:13327316731 备注:公众号
- 白雪与高山流水家的小宝贝写的太好了,正好工作需要做iOS和安卓的自动化测试,嘻嘻嘻~作者那是自然~
- zverendeskto 这个是什么工具???作者不是deskto,是appium desktop版本
- 吃土少年请问deskto全名叫啥?作者appium desktop
【待考察】Appium使用技巧,助你快速入门移动端自动化!的更多相关文章
- 人生苦短我用Python,本文助你快速入门
目录 前言 Python基础 注释 变量 数据类型 浮点型 复数类型 字符串 布尔类型 类型转换 输入与输出 运算符 算术运算符 比较运算符 赋值运算符 逻辑运算符 if.while.for 容器 列 ...
- git常用命令,助你快速入门
git是程序员中最常用的版本控制工具,学会git的基本使用是十分重要,特别是在公司里面的协同开发,废话不多说,下面贴出常用的命令. 1.基本配置 # 既然git是多人协同的工具,别人要看到你提交代码的 ...
- selenium知识思维导图|从元素定位到操作断言,助你快速入门自动化测试
为什么要进行自动化测试? 缩短测试周期,节省成本. 避免人为出错,提高准确性和可靠性. 获取需求覆盖率,代码覆盖率,提供衡量软件质量的指标. 自动化测试的条件? 手工测试完成后. 项目周期长,需求稳定 ...
- .NET Core快速入门教程 5、使用VS Code进行C#代码调试的技巧
一.前言 为什么要调试代码?通过调试可以让我们了解代码运行过程中的代码执行信息,比如变量的值等等.通常调试代码是为了方便我们发现代码中的bug.ken.io觉得熟练代码调试技巧是成为合格程序员的基本要 ...
- Photoshop零基础教程集锦,助你快速进阶为大佬,轻松、任性!!!
现今,对于Web或App UI设计师而言,除了不断学习专业知识,提升设计技能.掌握一款得心应手的设计工具(例如设计师们常用的图像处理工具PhotoShop,矢量图绘制工具AI, 图形视频处理工具AE, ...
- webpack快速入门——实战技巧:watch的正确使用方法,webpack自动打包
随着项目大了,后端与前端联调,我们不需要每一次都去打包,这样特别麻烦,我们希望的场景是,每次按保存键,webpack自动为我们打包,这个工具就是watch! 因为watch是webpack自带的插件, ...
- FIDDLER的使用方法及技巧总结(连载一)FIDDLER快速入门及使用场景
FIDDLER的使用方法及技巧总结 一.FIDDLER快速入门及使用场景 Fiddler的官方网站:http://www.fiddler2.com Fiddler的官方帮助:http://docs.t ...
- webpack快速入门——实战技巧:开发和生产并行设置
package.json中,devDependencies和dependencies是不同的 devDependencies:开发依赖 dependencies:生产依赖(线上) 1.安装生产环境的依 ...
- webpack快速入门——实战技巧:webpack模块化配置
首先在根目录,新建一个webpack_config文件夹,然后新建entry_webpack.js文件,代码如下: const entry ={}; //声明entry变量 entry.path={ ...
随机推荐
- 结对作业——WordCount进阶版
Deadline: 2018-10-7 22:00PM,以博客提交至班级博客时间为准 要求参考来自:https://www.cnblogs.com/xinz/archive/2011/11/27/22 ...
- MySQL 用户连接与用户线程
本文转载自公众号数据库随笔,作者happypig 微信看起来麻烦 pig已经好长一段时间没有分享文章了,有点对不起订阅的朋友.最近在做比较复杂跟困难的事情,也并不一定最终会有成果,因此必须对此沉默. ...
- 垃圾收集器(GC)
堆分区:所有new的对象都会存放在堆中 > 新生代(Young Generation):存放生命周期短的对象,具体还分为Eden和Survivor两个区,其中Survivor分为Fro ...
- NVMe概述
目前企业SSD市场按照接口协议主要分为SATA SSD,PCIe SSD和NVMe SSD,其中SATA SSD沿用了传统的HDD使用的SATA协议,在企业应用和服务器兼容性上具有优势:而PCIe S ...
- Windows10 VS2017 C++ Server Socket简单服务器端与客户端
服务端: #include "pch.h" #include<iostream> #include<WinSock2.h> #include <Ws2 ...
- 2.oracle之用户管理sql
--创建用户--create user 用户名 identified by 密码;create user jojo identified by bean; --给用户授权--grant conn ...
- 微信小程序跳转(当我们不知道是普通页面还是tabbar)
页面跳转一般我们都用wx.navigateTo 或者wx.redirectTo等,当页面为tabbar的某一个页面时, 我们盖如何兼容呢我处理的方式为在navigateTo的fail方法中执行wx.s ...
- LiquiBase 学习
preconditions mysql database is installed maven has been setted up properly add depedenceies apply p ...
- session and cooike
一.理解Cookie Cooie的作用: 当一个用户通过HTTP访问一个服务器时,这个服务器会将一些Key/Value键值对返回给客户端浏览器,并给这些数据加上一些限制条件,在条件符合时这个用户下次访 ...
- python第三方模块的导入
模块搜索路径 当我们尝试加载一个模块时,Python会在指定的路径下搜索对应的.py文件,如果找不到,就会报错: >>> import module1 Traceback (most ...