APP自动化测试(二)-appium
接前面的例子
一: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)https://www.wandouip.com/t5i337805/(没试验)
后面我是发现像这种静态的没问题
但是这种动态的就不行了,哪怕我暂停了
好吧,可能是我理解还不够深入,这个疑问先留着
还有一种情况我经常遇到,就是我写完脚本运行,发现元素错了,我想重新去定位,这时候刷新就出现上面那个问题,我的解决方法是关掉appium
这里了解一下里面的内容
三:属性了解
PackageName(包名)
应用的唯一身份标识,系统通过包名识别不同的应用,如两个相同包名的应用在安装时会提示覆盖
ActivityName(类名)
Activity:android四大组件之一,简单来说就是一个界面,和用户进行交互, 如桌面(Launcher)
#获得App入口的Activity
aapt 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)控件
特别多,可以参考:https://blog.csdn.net/mapeifan/article/details/50454002
这里简单列举一下常见的
#文本类
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
加依赖:https://mvnrepository.com/,选一个下载数多一点的,这样稳定性可能比较好
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<WebElement> androidDriver = new AndroidDriver<WebElement>(
new URL("http://127.0.0.1:4723/wd/hub"),desiredCapabilities);
}
}
然后模拟器开启,appium开启,运行代码,抖音被执行,ok!(这是不是测试版本的HelloWorld呀!!!)
推荐阅读
-
appium自动化测试环境搭建
-
APP自动化测试(二)-appium
-
Python3学习笔记_app自动化测试_通用操作_20200811
-
Appium移动自动化测试入门 - 各种报错
-
【移动App自动化测试4】---2基于Android系统的自动化测试环境
-
(APP测试三板斧)第二板:frida+一键hook脚本绕过SSL Pining
-
APP兼容性测试 (二) 最新 iPhone 机型分辨率总结
-
Appium自动化测试-iOS模拟器自动化测试
-
python unittest 极简自动化测试框架:二、 BeautifulReport的使用简解,生成漂亮的报告
-
postman+newman+jenkins接口自动化测试(二)