当前位置:首页>编程日记>正文

快速开始

准备

1、被测试的app应用(apk包)

2、运行appium server 就是appiumdesktop 

  启动后,点击Adcanced

  勾选Allow Session Override

  然后点击start Server 启动appium server

3、启动被测app的运行环境 

  真实设备或者模拟器

4、把apk包安装到运行环境(3中)

  虚拟器直接拖拽

       真机可以使用命令安装或者直接放到手机中安装

下面写脚本例如开发者头条中的登录注册功能

脚本略过

查看包名称用aapt dump badging XXX.apk > d:a.txt && d:\a.txt

选择APP界面元素

查看工具

web自动化开发的时候,要找到元素,我们是根据浏览器开发者工具(F12)来查看元素的特性,根据这些特性,比如:id,classname,tagname,或者CSS和xpath选择到元素。

而安卓查看界面元素,最常用的是Android SDK中的uiautomator,它在.androidsdk oolsin下面

手机和电脑连接之后,打开uiautomator.bat就能查看手机页面中元素

跟web的不同点:

  不能自动刷新

  鼠标移动到某个元素上,某个元素就有虚线红框子,同时右边会高亮显示当前的元素,确定要查看元素,就单击一下,虚线变实线

还有一种查看元素的方法,用appiumserver中的inspect,这个工具可以查看元素是否能定位到,便于调试相当于web页面中的ctrl+F

元素属性

index:

text:

resource-id:

class:

package:

contet-desc:用来描述元素的用途和特性

bounds:界面中元素的位置,左上角和右下角的坐标

选择元素的代码

find_element_by_XXX:查找符合条件的第一个元素

find_elements_by_xxx:查找符合条件的所有元素

选择元素的方式

1、ID(就是resource-id)

2、classname

3、XPATH

web自动化的时候,最灵活的定位方式就是CSS和xpath了,经常用他们来定位一些比较难定位到的元素,例如没有ID,没有唯一name的属性,甚至几乎没有什么属性,因为css和xpath可以根据上层节点的相对位置来定位

在appium中,不支持使用css可以使用xpath来定位元素

写法如下:

driver.find_element_by_xpath('//eles//ele2[@attr="a1"]')

特别注意的是,以前做web自动化的时候xpath中每个节点名是html的tagname,在appium中,每个节点名对应的是class属性的内容

 

注意:

  @1:appium不支持by_name,可以使用find_element_by_AndroidUiAutomator("text("我的")")  

  @2:不支持by_cssselector,可以使用by_Xpath

如何查看元素是否唯一:把xml导出到文件中,uiautomator左上角第四个图标

使用uiautomator定位元素

javacode = "new UiSelector().recourceId("android.com.XX")"  #java代码

driver.find_element_byandroidUiautomator(javacode)

具体参考Android UI 自动化测试之UiSelector:https://blog.csdn.net/qq_33544833/article/details/77370329

操作元素

webelement常用的调用方法是send_keys和click方法

1、tap

tap和click类似,都是点击界面,最大的区别,tap是针对坐标而不是针对找到的元素。有时候,我们难易定位怨毒的时候可以使用这个tap方法

  driver.tap([(650,1250)],300) 两个参数,第一个表示点击的坐标,第二个表示停留的时间毫秒

2、swipe

滑动

  driver.swipe(50,500,50,1230,1000)  5个参数分别表示,起始位置的X坐标、起始位置的Y坐标、结束位置的X坐标、结束位置的Y坐标,滑动所消耗的时间,短表示滑动的快,时间长表示滑动的慢

3、通知查看

系统通知:比如短信通知、微信通知、自己应用对应的通知,安卓打开通知的方式,可以是从屏幕顶端下滑来查看通知。其实appium提供了可以直接打开通知栏的方法

driver.open_notifications()

4、按键操作

press_keycode(数字)

比如,返回键。keycode_back,对应数字4

driver.press_keycode(4)

home键盘,数字3

查看按键对应的数值,网址:https://developer.android.google.cn/reference/android/view/keyEvent.html

使用真实设备进行自动化

有时候要坐不同手机的兼容性测试,必须在真实的手机设备上进行测试

有的应用在模拟器上,种种原因,运行不了。比如微信。

1、USB线连接手机

2、打开开发者选项中的USB调试模式

3、电脑的命令窗口中输入adb devices -l


http://www.coolblog.cn/news/72043e778065cf44.html

相关文章:

  • asp多表查询并显示_SpringBoot系列(五):SpringBoot整合Mybatis实现多表关联查询
  • s7day2学习记录
  • 【求锤得锤的故事】Redis锁从面试连环炮聊到神仙打架。
  • 矿Spring入门Demo
  • 拼音怎么写_老师:不会写的字用圈代替,看到孩子试卷,网友:人才
  • Linux 实时流量监测(iptraf中文图解)
  • Win10 + Python + GPU版MXNet + VS2015 + RTools + R配置
  • 美颜
  • shell访问php文件夹,Shell获取某目录下所有文件夹的名称
  • 如何优雅的实现 Spring Boot 接口参数加密解密?
  • LeCun亲授的深度学习入门课:从飞行器的发明到卷积神经网络
  • Mac原生Terminal快速登录ssh
  • java受保护的数据与_Javascript类定义语法,私有成员、受保护成员、静态成员等介绍...
  • mysql commit 机制_1024MySQL事物提交机制
  • 支撑微博千亿调用的轻量级RPC框架:Motan
  • jquery 使用小技巧
  • 2019-9
  • 法拉利虚拟学院2010 服务器,法拉利虚拟学院2010
  • vscode pylint 错误_将实际未错误的py库添加到pylint白名单
  • 科学计算工具NumPy(3):ndarray的元素处理
  • 工程师在工作电脑存 64G 不雅文件,被公司开除后索赔 41 万,结果…
  • linux批量创建用户和密码
  • newinsets用法java_Java XYPlot.setInsets方法代碼示例
  • js常用阻止冒泡事件
  • 气泡图在开源监控工具中的应用效果
  • 各类型土地利用图例_划重点!国土空间总体规划——土地利用
  • php 启动服务器监听
  • dubbo简单示例
  • 【设计模式】 模式PK:策略模式VS状态模式
  • [iptables]Redhat 7.2下使用iptables实现NAT
  • Ubuntu13.10:[3]如何开启SSH SERVER服务
  • CSS小技巧——CSS滚动条美化
  • JS实现-页面数据无限加载
  • 阿里巴巴分布式服务框架 Dubbo
  • 最新DOS大全
  • Django View(视图系统)
  • 阿里大鱼.net core 发送短信
  • 程序员入错行怎么办?
  • 两张超级大表join优化
  • 第九天函数
  • HDU 5988 最小费用流
  • Linux软件安装-----apache安装
  • 《看透springmvc源码分析与实践》读书笔记一
  • Sorenson Capital:值得投资的 5 种 AI 技术
  • 正式开课!如何学习相机模型与标定?(单目+双目+鱼眼+深度相机)
  • Arm芯片的新革命在缓缓上演
  • nagios自写插件—check_file
  • python3 错误 Max retries exceeded with url 解决方法
  • 通过Spark进行ALS离线和Stream实时推荐
  • 行为模式之Template Method模式