文章目录
一.appium简介
1.什么是appium
- Appium是一个跨平台移动端自动化测试工具,可以为IOS和Android平台创建自动化测试用例。可以模拟App内部的各种操作,如点击、滑动、文本输入等。只要我们手工操作的动作Appium都可以完成。
- appium 支持多平台、多语言- appium在不同平台中使用了标准的自动化APIs,所以在跨平台时,不需要重新编译或者修改自己的应用。- appium支持Selenium WebDriver支持的所有语言,
如java、Object-C、JavaScript、Php、Python、Ruby、C#、Clojure,或者Perl语言
,更可以使用Selenium WebDriver
的Api。- appium 支持多平台,包括MAC 和 Windows
。它针对这两大平台开发了appium-Server
。- 又同时支持Android 和 iOS
两个操作系统。这就使得 appium 变得非常灵活。
2.appium 的工作原理
- 自动化脚本向
AppiumServer
发送注册参数(URL,platformName,platformVersion,deviceName,appPackage,appActivity) - AppiumServer将
bootstrap.jar包
放入手机端
中 - 手机端用bootstrap启动
手机端口(4724)
,并将端口返回给AppiumServer
(相当于建立好了通信连接
) - 自动化脚本发送请求(操作或命令或动作)给
AppiumServer
- AppiumServer将
请求解析
并发送给bootstrap
- bootstrap将请求解析发给
UIAutomator
- UIAutomator执行相应的操作并将结果返回给
bootstrap
- bootstrap将响应结果返回给
AppiumServer
- AppiumServer将响应结果返回到脚本
综上所述,AppiumServer**像是一个
请求者
;bootstrap充当
桥梁
的角色,负责
PC与电脑之间的通信
;
UIAutomator
则是真正的执行者。**
3.APP类型
4.APP页面布局
类似于HTML,页面由各个标签组成
二,appium开发环境部署(python环境)
1.下载安装环境
1.1.下载安装所需环境
由于appium是基于JDK+SDK环境来运行,如果想正常使用python+appium进行脚本开发,需要部署下面的环境
- Android SDK:Android SDK的安装与配置
- JDK环境:jdk的安装与配置
- Python3:python3的安装与配置
- Appium-desktop(也叫做 Appium-Server-GUI ) :安装教程
- Appium-Inspector (Appium 开发者工具 ):下载地址 - 如果使用 Android SDK自带Uiautomator2 ,那么这个工具可以不用安装,
作用等同于 Uiautomator2
- pip 安装Appium-Python-Client模块:命令:
pip install Appium-Python-Client
- pip 安装pytest模块:
pip install pytest
- 夜神模拟器:下载地址 - 使用真机测试,忽略夜神模拟器安装 :ADB连接模拟器或者Android手机
通过上面的设置,我们就具备了使用appium进行python自动化测试要求了
1.2.Appium-desktop( Appium-Server-GUI )配置
- 默认安装即可,无需特别设置,安装后启动桌面appium图标。
- Appium-desktop配置Android SDK 安装目录和 Java JD安装目录startServer启动Appium-desktop: 监听本地4723端口发起请求
1.3.Appium-Inspector 配置
- 远程路径(Remote Path):
/wd/hub
- 高级设置(Advanced Settings):勾选
Allow Unauthorized Certificates
,不勾选 Use Proxy
startSession启动Appium-Inspector
1.4.元素探测工具
- 用于定位APP元素的,比如需要点击某个按钮,需获取到该按钮的元素才能对其进行操作(单击,双击等),这里推荐使用
UIAutomatorViewer
。
1.5.appium的功能介绍
Simple:简单模式
- Edit Configurations:可以配置android sdk和Java sdk的环境地址,如果已配置好环境,会使用默认的地址
Advanced:高级模式
- 如果某处有id,
元素id值是唯一的
,所以可用id去进行定位发送秘钥
:对文本框进行输入
2.appnium-python-client和selenium的关系
- Appium Python Client模块与Selenium之间存在一定的版本依赖关系。- appium像是一个服务,appium-python-client是
让python连接appium服务的一个驱动
,也就是一个python语言封装和appium api通讯的一个库
。- appium又继承了selenium的webdriver
,因此appium-python-client安装会更新selenium。
- appium-python-client版本https://pypi.org/project/Appium-Python-Client/#history```查看selenium和appium-python-client的版本 pip show selenium pip show appium-python-client卸载当前的selenium和appium-python-client pip uninstall selenium pip uninstall appium-python-client安装指定版本的appium-python-clien#安装appium-python-client的同时,系统会安装与之相匹配的selenium版本 pip install appium-python-client==2.11.0```
三.appium自动化代码编写步骤
- Python3
- Java8
- Android SDK v2.4.1
- Appium v2.2.1
1.手机端操作(以红米手机为例)
- 进入【开发者模式】- 【设置】——【我的设备】——【全部参数】——【MIUI版本】点击5次,即可打开开发者模式
- 在开发者选项中,打开【usb调试】、【usb安装】
2.电脑端操作
android-sdk-tools环境搭建
- 安装
installer_r24.4.1-windows.exe
,中途一定要出现【java路径
】再进行下一步 - 解压缩
build-tools.zip 、tools.zip 、platform-tools.zip
到 安装目录【不要文件夹套着文件夹
】 - 打开安装目录中
SDK Manager.exe
, 查看platform-tools和build-tools是否已安装
- 查看手机的android版本, 在
SDK Manager
中 安装对应 android版本
四.使用appium进行APP测试:
1.手机端操作(以红米手机为例)
- 进入【开发者模式】 步骤见1,不再赘述
- 打开USB调试及安装
- 手机通过数据线连接电脑
2.电脑端操作(以手机中自带计算器为例)
- 打开appium,点击编辑配置,将如图所示位置的安卓SDK/JDK路径分别更改为自己的路径- 保存修改,点击启动服务器
- 打开Appium Inspector配置需要连接app所需参数- 如图所示几项分别为:
{"platformName":"Android",# 机操作系统,如 iOS, Android, 或者 FirefoxOS (必填)"platformVersion":"9",#手机版本 (必填)"deviceName":"FJH7N19xxx00457",#设备编码,不会进行校验,但是没有会报错 (必填)"appPackage":"com.android.calculator2",#运行的 Android 应用的包名 (必填)"appActivity":"com.huawei.calculator.Calculator",#程序入口类名 (必填)"noReset": true #在当前 session 下不会重置应用的状态。默认值为 false(非必填)}
- 获取【设备名称】命令行输入【adb devices
】,- 获取【程序包名、程序入口类名
】 1.关闭手机所有后台程序
2. . 打开 手机中 – 计算器-应用程序3. 在命令窗口输入【adb shell "dumpsys window | grep mCurrent
】>> 如果上面命令正确启动报错,说明当前的appActivity设置的不是app首次进入的appActivity,可以解析apk文件>
> > > > - aapt dump badging apk包路径 |findstr package> - aapt dump badging F:\my_tools\DigiFinex_V2023.10.12_debugT.apk |findstr package> - aapt dump badging apk包路径 |findstr activity> - aapt dump badging F:\my_tools\DigiFinex_V2023.10.12_debugT.apk |findstr activity - 配置好所需功能后,保存配置,点击启动会话
- 会发现手机端已经自动跳转到计算器界面,并显示在电脑端appium窗口左侧
- 注:
如果手机是第一次连接appium,会提示下载一个软件【
Appium Settings】,正常下载安装即可
,安装后的APP如图中红框所示 之后再次使用就无需下载,【Appium Settings
】运行时会显示在手机通知栏,如图中红框所示 - 通过鼠标点击电脑appium上的手机计算器界面,录制需要测试的操作(以测试九九乘法表为例)- 首先在DOS窗口中输入【
adb shell pm clear 包名
】,按enter,意为清除缓存,防止缓存对将要进行的测试造成影响,返回结果为【Success
】即清除缓存成功- 点击红框处眼睛图标,即为开始录制 - 开始录制具体操作,以操作7*8为例
- 将录制的代码复制到pycharm
from appium import webdriverfrom appium.webdriver.common.appiumby import AppiumByfrom appium.webdriver.common.touch_action import TouchAction# Appium服务器地址appium_server ='http://127.0.0.1:4723/wd/hub'# Appium测试设备配置desired_caps ={"platformName":"Android","appium:platformVersion":"9","appium:deviceName":"FJH7N19131000457","appium:appPackage":"com.android.calculator2","appium:appActivity":"com.huawei.calculator.Calculator",'unicodeKeyboard':True,# 使用自带输入法,输入中文时填True'resetKeyboard':True,# 执行完程序恢复原来输入法'noReset':True,# 不要重置App,如果为False的话,执行完脚本后,app的数据会清空,比如你原本登录了,执行完脚本后就退出登录了'newCommandTimeout':6000}# 连接Appium服务器driver = webdriver.Remote(appium_server, desired_caps)driver.implicitly_wait(10)# TODO 干掉弹框TouchAction(driver).tap(x=777, y=2192).perform()# 清空计算器driver.find_element(AppiumBy.ID,"com.android.calculator2:id/op_clr").click()for i inrange(1,10):for j inrange(i,10):# TODO 按下 9 el1 = driver.find_element(AppiumBy.ID,f'com.android.calculator2:id/digit_{i}') el1.click()# TODO 按下 乘X el2 = driver.find_element(AppiumBy.ACCESSIBILITY_ID,"乘") el2.click()# TODO 按下 8 el3 = driver.find_element(AppiumBy.ID,f'com.android.calculator2:id/digit_{j}') el3.click()# TODO 获取 result 结果 el4 = driver.find_element(AppiumBy.ID,"com.android.calculator2:id/result")print(f"{i} X {j} = {el4.text}", end=", ")# 清除 el6 = driver.find_element(AppiumBy.ID,"com.android.calculator2:id/op_clr") el6.click()print(f"\n-----{i}乘法已完毕-----------")driver.quit()
- 运行结果:
五.元素定位、元素事件操作
【Python】AppUI自动化—appium自动化元素定位、元素事件操作(17)下
版权归原作者 墩墩分墩 所有, 如有侵权,请联系我们删除。