APP移动端自动化基础及appium环境搭建

目录

APP移动端自动化测试基础 

 

主流移动端自动化工具

Appium介绍 

Appium工作原理 

 Appium环境搭建

安装前准备工具

安装Android SDK 

配置环境变量

安装Python-client

安装夜神模拟器

mumu模拟器

 运行第一个appium测试

运行appium

打开通讯录应用

启动识别UI的工具

编写脚本


APP移动端自动化测试基础 

移动端测试分类

1、APP功能测试

1)业务逻辑正确性测试

2)兼容性测试 包括 系统版本,分辨率,网络情况

3)异常测试 热启动,网络切换中断恢复,电话信息中断恢复

4)升级&安装卸载测试

5)健壮性测试

2、app自动化测试

3、app安全测试

自动化测试主要用于回归测试。

APP比web端来说,迭代太多。

兼容性测试,现在都在云平台上执行。如云测。

主流移动端自动化工具

1、Robotium 支持语言java,仅支持Android,不支持跨应用

2、Macaca 支持语言:java、Python、nodejs,支持Android和ios

3、Appium 支持语言java python C# php perl reby 支持android和ios,支持跨应用

Macaca技术支持特别少。

自动化测试工具选择的关注点

1)是否支持toast

2)是否支持nativa,webview

3)是否支持跨应用

native就是原生安卓系统。

webview网络视图,就是H5

Appium介绍 

 

Appium工作原理 

 

Appium的工作原理主要基于客户端-服务器架构,它使用这种架构来传输命令给设备上安装的服务端应用程序。以下是Appium工作原理的详细解释:

  1. 启动服务端:当Appium启动时,它会在本地机器上创建一个HTTP服务器,监听一个特定的端口(通常是4723端口)。这个服务器作为一个中转站,接收来自客户端的请求。
  2. 客户端请求:客户端可以是任何支持HTTP请求的编程语言或工具,它们发送测试脚本或命令给Appium服务器。这些请求包含了需要在移动设备上执行的操作信息。
  3. 解析与转发:Appium服务器接收到客户端的请求后,会解析这些请求,并将其转发给安装在移动设备上的中间件(通常是Bootstrap.jar)。Bootstrap是用Java编写的,它监听另一个端口(如4724端口),并接收来自Appium服务器的指令。
  4. 设备端执行:Bootstrap接收到指令后,会调用相应的测试框架(如UIAutomator或XCUITest,取决于设备的操作系统)来执行具体的操作。这些框架允许Bootstrap控制设备上的应用程序和用户界面。
  5. 结果返回:执行完操作后,设备端将执行结果返回给Bootstrap,然后Bootstrap再将结果返回给Appium服务器。
  6. 结果展示:最后,Appium服务器将结果返回给原始的客户端,客户端可以展示这些结果,或者根据结果继续执行后续的测试脚本。

通过这种方式,Appium实现了一个跨平台、跨语言的自动化测试解决方案,它支持多种移动设备和操作系统,并且可以与多种编程语言和测试框架配合使用。这使得开发者能够更轻松地为移动设备编写和执行自动化测试脚本,提高了开发效率和测试覆盖率。

 Appium环境搭建

安装前准备工具

Python,selenium,.netframework45,安装jdk8

安装Android SDK 

Android sdk提供Android API库和开发工具构建,测试和调试应用程序使用

下载android sdk

https://dl.google.com/android/android-sdk_r24.4.1-windows.zip

(也可以直接安装 android studio 开发工具,内部集成了android-sdk)

解压后运行文件夹中 SDK Manager.exe 安装sdk tools、sdk plaform-tools、sdk build-tools

配置环境变量

新建ANDROID_HOME,值为sdk的目录。

把下面三个路径,加入path

 加入path

加入path

加入path,确定,关闭环境变量设置。

验证,命令行输入adb,只要看到版本号即可。

安装Python-client

在命令行输入pip的这行命令安装python-client 

pip install Appium-Python-Client

 安装Appium

该工具封装了Appium server和Nodejs依赖环境

Appium有三个重要工具,分别是appium server,appium desktop,appium inspector。

appium desktop可用于macos,windows,linux,内嵌了appium server和appium inspector。

server用来接收不同语言发送的脚本,inspector用来查看应用程序元素。

appium V1.22之后,appium inspector工具作为单独的应用发布,不再内嵌在appium desktop中。

Releases · appium/appium-desktop · GitHub

安装appium inspector

Releases · appium/appium-inspector (github.com)

下载对应版本

安装夜神模拟器

用来模拟手机

下载地址 夜神安卓模拟器-安卓模拟器电脑版下载_安卓手游模拟器_手机模拟器_官网 (yeshen.com)

首先需要让系统找到模拟器上手机设备。如何让系统找到模拟器?

运行adb devices可以看到此时没有设备。 

把android sdk文件夹下platform tools下的adb.exe复制到夜神的bin文件夹下,并改名为nox_adb.exe,然后重启夜神。

再用adb devices 检测到的就是夜神模拟器的设备

mumu模拟器

也可以用mumu模拟器。

将把android sdk文件夹下platform tools下的adb.exe复制到路径\Netease\MuMuPlayer-12.0\shell下,打开模拟器,打开cmd,输入:

adb connect 127.0.0.1:7555

再使用adbdevices 可以看到连接到设备。 

 运行第一个appium测试

夜神模拟器打开USB开发者模式 参考:夜神模拟器如何开启开发者选项 | 夜神模拟器帮助中心 (yeshen.com)

运行appium

启动appium server GUI

打开通讯录应用

adb命令获取当前打开的app的包名

adb logcat | findstr Displayed 

  Displayed com.android.contacts/.activities.PeopleActivity: +477ms

即为通讯录应用的包名。 

启动识别UI的工具

在Android SDK的安装目录下,D:\Program Files\Android\tools下找到uiautomatorviewer.bat

uiautomatorviewer.bat是一个用于Android系统APP的原生页面元素定位的工具。它位于Android SDK的tools目录下,是一个Windows系统下的可执行文件。通过双击该文件,可以启动uiautomatorviewer工具,它提供了一个可视化的界面,可以获取当前UI界面的快照,查看UI布局结构,并且可以查看各个控件的相关属性。这个工具对于开发者来说非常有用,可以帮助他们更好地理解和定位APP中的UI元素。

此外,uiautomatorviewer工具还提供了保存布局的功能,可以将当前的布局保存为图片文件和XML布局结构文件,方便开发者进行后续的分析和处理。

总之,uiautomatorviewer.bat是Android开发过程中一个非常实用的工具,可以帮助开发者更加高效地进行UI元素的定位和分析。

点击如图device screenshot按钮进行截屏,会识别到模拟器打开的应用。 

 在UI工具上点击元素,在右侧可以看到元素信息

注:识别过程中,遇到报错 obtianing UI hierarchy 
com.android.ddmlib.SyncException:Remote object doesn't exist

重启夜神模拟器解决。

编写python脚本

脚本1

 ​​​​​​使用Pycharm工具编写脚本并运行,即可实现,启动通讯录应用,并点击新建联系人。

 platformName和plartFormVersion是根据安卓版本写的
每个在移动端运行的APP都会有一个包 appPackage 先启动待测应用 再用adb命令去获取
运行上面代码,会开启通讯录应用,并点击创建账号按钮。这里是用resource-id定位

from appium import webdriver
#创建设备信息
desired_caps={}
desired_caps['platformName']='Android'
desired_caps['platformVersion']='7.1.2' # #在手机设置,关于平板电脑可以找到版本
desired_caps['deviceName']='127.0.0.1:62001' #模拟器上设备的名称 在cmd下用adb devices显示的地址
desired_caps['appPackage']='com.android.contacts'#通讯录包名
desired_caps['appActivity']='.activities.PeopleActivity'#app活动名

#连接
driver=webdriver.Remote("http://127.0.0.1:4723/wd/hub",desired_caps)#连接的是appium

#定位
driver.find_element_by_id("com.android.contacts:id/floating_action_button").click() #点击添加账号按钮





desired_caps是发送给Appium server的键值对集合,作为启动服务端时设置的参数。

 脚本2 

需要注意的是Appium-Python-Client 3.0.0以后使用UiAutomator2Options()设置启动参数,但是3.0.0之前使用的是desired_caps(但是我这里版本用的2.11,,代码用UiAutomator2Options可以通过)

# -*- coding: utf-8 -*-
# @Time    : 2024/3/27

#
from appium import webdriver
from selenium.webdriver.common.by import By
from appium.options.android import UiAutomator2Options
from appium.webdriver.common.appiumby import AppiumBy
options=UiAutomator2Options()
options.platform_name='Android'
options.platformVersion='7.1.2'
# options.device_name='com.android.contacts'
options.app_package='com.android.contacts'
options.app_activity='.activities.PeopleActivity'
options.no_reset='true'
server='http://127.0.0.1:4723/wd/hub'
driver=webdriver.Remote(server,options=options)
driver.implicitly_wait(30)

#定位
driver.find_element(By.ID,"com.android.contacts:id/floating_action_button").click() #点击右下角添加账号
driver.find_element(by=AppiumBy.ANDROID_UIAUTOMATOR, value="new UiSelector().text(\"姓名\")").send_keys("测试联系人")
driver.find_element(By.ID,"com.android.contacts:id/menu_save").click()#点击保存按钮
ele=driver.find_element(By.ID,"com.android.contacts:id/large_title").text
assert ele=="测试联系人" #校验联系人已保存


2024/3/27运行通过。 

运行脚本

脚本第一次运行会在模拟器安装 appium settings,然后打开通讯录,新建联系人并保存。

  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值