博客
关于我
APP自动化测试(二)-appium
阅读量:328 次
发布时间:2019-03-04

本文共 2962 字,大约阅读时间需要 9 分钟。

接前面的例子

 

一:APP元素探测工具(Appium Inspector)

比如我录制一个滑动,开启录制后,选中滑动按钮选择开始和结束点,就能录制了,也能获得相应的代码

 

 

 

 

二:UIAutomatorViewer

是SDK提供的原生元素定位工具,不需要和上面那样配置设备名啊这些(也就是不用提供启动参数),而且效率更好

如果是SDK包的话在这目录里面:sdk\tools\bin

不过我用的是android studio,在sdk\tools就有

确认模拟器开启,点这个按钮就能获得最新的画面映射

可能会出现这种错误

Error while obtaining UI hierarchy XML file: com.android.ddmlib.SyncException: Remote object doesn't exist!

找了一些方法:记录一下

(1)在cmd命令窗口中输入 adb root(我发现我的好像已经打开了)

(2)重启手机并且确认设备已经连接(也不行)

(3)重新打开uiautomatorviewer.bat(也不行)

(4)重新把手机拔了再插(没有用,我的是模拟器)

(5)打开手机开发者权限,将USB调试按钮重新启动(我直接关了再开,然后可以显示了)

但是我打开抖音试图再来一波,发现不行了

(6)关了appium(我的已经关了)

(7)(没试验)

 

后面我是发现像这种静态的没问题

但是这种动态的就不行了,哪怕我暂停了

好吧,可能是我理解还不够深入,这个疑问先留着

 

 

还有一种情况我经常遇到,就是我写完脚本运行,发现元素错了,我想重新去定位,这时候刷新就出现上面那个问题,我的解决方法是关掉appium

 

 

 

这里了解一下里面的内容

 

 

 

三:属性了解

PackageName(包名)

应用的唯一身份标识,系统通过包名识别不同的应用,如两个相同包名的应用在安装时会提示覆盖

ActivityName(类名)

Activity:android四大组件之一,简单来说就是一个界面,和用户进行交互, 如桌面(Launcher)

#获得App入口的Activityaapt dump badging 
<应用路径>
| findstr "launchable-activity"
#查看正在前台运行的 activity adb shell dumpsys activity | find "mFocusedActivity"

 

 

 

四:APP了解

(1)类型

Native App(原生app)

Hybrid App(混合app)

Web App(Web app)

 

(2)布局

1.线性布局(LinerLayout):线性布局分为水平线性和垂直线性

2.相对布局(RelativeLayout):根据参照物的位置,来确定控件的位置

3.表格布局(TableLayout):一种行列方式排列视图的布局

4.网格布局(GridLayout):将界面划分为网格,界面元素可随意摆放在网格中

5.绝对布局(AbsoluteLayout):根据坐标轴的方式来定位控件,原点(0,0)在左上角,往右X轴递增,往下Y轴递增

6.帧布局(框架布局)(FrameLayout):在它里面的控件都是按后面的一个控件叠加在前一个控件上来显示的

 

比如抖音,可以看到相应的布局信息

 

(3)控件

特别多,可以参考:

这里简单列举一下常见的

#文本类TextView:显示文本信息EditText:编辑框,能输入和编辑内容#按钮类Button:按钮控件RadioButton:单选按钮RadioGroup:单选按钮组,经常和RadioButton一起使用ImageButton 图片按钮CheckBox:复选按钮#图片控件ImageView:图片控件#进度条控件ProgressBar:进度条

 

 

 

 

五:第一个app自动化脚本

可以使用maven工具,用来管理依赖包,如java-client.jar

下载maven,配置环境变量

在path里面加上%MAVEN_HOME%\bin;就行了

 

配置一个包下载的本地文件夹(看到有些是\的,如果下载的包没有在这里面,那可能是路径有问题,不过我这没问题)

加个阿里的镜像,下载的快一点

在eclipse把默认的路径改一下

E:\idea2018\apache-maven-3.6.2-bin\apache-maven-3.6.2\conf\settings.xml(这个配置文件的名字不一定是这个,也可以修改的)

 

 

创建maven项目

文件-新建-项目-搜索maven-选中maven project

加依赖:,选一个下载数多一点的,这样稳定性可能比较好

package com.javaAuto;import java.net.MalformedURLException;import java.net.URL;import org.openqa.selenium.WebElement;import org.openqa.selenium.remote.DesiredCapabilities;import io.appium.java_client.android.AndroidDriver;public class JavaAutoTest {//	main	public static void main(String []agrs) throws Exception{//		创建配置对象		DesiredCapabilities desiredCapabilities = new DesiredCapabilities();//		添加配置(设备、设备类型、包名、活动启动入口)		desiredCapabilities.setCapability("deviceName", "127.0.0.1:62001");		desiredCapabilities.setCapability("platformName", "Android");		desiredCapabilities.setCapability("appPackage", "com.ss.android.ugc.aweme");		desiredCapabilities.setCapability("appActivity", "com.ss.android.ugc.aweme.splash.SplashActivity");		desiredCapabilities.setCapability("automationName", "UiAutomator1");		//		创建驱动(appium通信地址,配置对象)		AndroidDriver
androidDriver = new AndroidDriver
( new URL("http://127.0.0.1:4723/wd/hub"),desiredCapabilities); }}

然后模拟器开启,appium开启,运行代码,抖音被执行,ok!(这是不是测试版本的HelloWorld呀!!!)

 

转载地址:http://nksh.baihongyu.com/

你可能感兴趣的文章
MySQL Xtrabackup 安装、备份、恢复
查看>>
mysql [Err] 1436 - Thread stack overrun: 129464 bytes used of a 286720 byte stack, and 160000 bytes
查看>>
MySQL _ MySQL常用操作
查看>>
MySQL – 导出数据成csv
查看>>
MySQL —— 在CentOS9下安装MySQL
查看>>
MySQL —— 视图
查看>>
mysql 不区分大小写
查看>>
mysql 两列互转
查看>>
MySQL 中开启二进制日志(Binlog)
查看>>
MySQL 中文问题
查看>>
MySQL 中日志的面试题总结
查看>>
mysql 中的all,5分钟了解MySQL5.7中union all用法的黑科技
查看>>
MySQL 中的外键检查设置:SET FOREIGN_KEY_CHECKS = 1
查看>>
Mysql 中的日期时间字符串查询
查看>>
mysql 中索引的问题
查看>>
MySQL 中锁的面试题总结
查看>>
MySQL 中随机抽样:order by rand limit 的替代方案
查看>>
MySQL 为什么需要两阶段提交?
查看>>
mysql 为某个字段的值加前缀、去掉前缀
查看>>
mysql 主从
查看>>