欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

APP自动化测试(二)-appium

程序员文章站 2024-03-24 08:45:40
...

接前面的例子

 

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

APP自动化测试(二)-appium

APP自动化测试(二)-appium

APP自动化测试(二)-appium

APP自动化测试(二)-appium

APP自动化测试(二)-appium

APP自动化测试(二)-appium

APP自动化测试(二)-appium

APP自动化测试(二)-appium

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

APP自动化测试(二)-appium

APP自动化测试(二)-appium

APP自动化测试(二)-appium

APP自动化测试(二)-appium

 

 

 

 

二:UIAutomatorViewer

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

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

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

APP自动化测试(二)-appium

APP自动化测试(二)-appium

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

APP自动化测试(二)-appium

可能会出现这种错误

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

APP自动化测试(二)-appium

找了一些方法:记录一下

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

APP自动化测试(二)-appium

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

APP自动化测试(二)-appium

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

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

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

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

APP自动化测试(二)-appium

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

(7)https://www.wandouip.com/t5i337805/(没试验)

 

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

APP自动化测试(二)-appium

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

APP自动化测试(二)-appium

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

 

 

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

 

 

 

这里了解一下里面的内容

APP自动化测试(二)-appium

 

 

 

三:属性了解

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

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

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

APP自动化测试(二)-appium

 

 

 

四:APP了解

(1)类型

Native App(原生app)

Hybrid App(混合app)

Web App(Web app)

APP自动化测试(二)-appium

 

(2)布局

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

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

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

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

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

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

 

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

APP自动化测试(二)-appium

 

(3)控件

特别多,可以参考:https://blog.csdn.net/mapeifan/article/details/50454002

这里简单列举一下常见的

#文本类
TextView:显示文本信息
EditText:编辑框,能输入和编辑内容

#按钮类
Button:按钮控件
RadioButton:单选按钮
RadioGroup:单选按钮组,经常和RadioButton一起使用
ImageButton 图片按钮
CheckBox:复选按钮

#图片控件
ImageView:图片控件

#进度条控件
ProgressBar:进度条

APP自动化测试(二)-appiumAPP自动化测试(二)-appium

 

 

 

 

五:第一个app自动化脚本

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

下载maven,配置环境变量

APP自动化测试(二)-appium

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

APP自动化测试(二)-appium

 

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

APP自动化测试(二)-appium

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

APP自动化测试(二)-appium

在eclipse把默认的路径改一下

APP自动化测试(二)-appium

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

APP自动化测试(二)-appium

 

 

创建maven项目

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

APP自动化测试(二)-appium

APP自动化测试(二)-appium

APP自动化测试(二)-appium

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

APP自动化测试(二)-appium

APP自动化测试(二)-appium

APP自动化测试(二)-appium

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