Python与Appium实现⼿机APP⾃动化测试
⽬录
1.什么是Appium
2.启动⼀个app⾃动化程序的步骤
3.appium服务介绍
4. appium客户端使⽤
5.adb的使⽤
6.Appium启动过程分析
1.什么是Appium
appium是⼀个开源的测试⾃动化框架,可以与原⽣的、混合的和移动的web应⽤程序⼀直使⽤。它使⽤WebDriver协议驱动IOS(内置的测试引擎xcuitest)、Android(uiautomator2,Espresso)和Windows应⽤程序
很多⼈学习蟒蛇,不知道从何学起。
很多⼈学习寻python,掌握了基本语法之后,不知道在哪⾥案例上⼿。
很多已经可能知道案例的⼈,却不怎么去学习更多⾼深的知识。
这三类⼈,我给⼤家提供⼀个好的学习平台,免费获取视频教程,电⼦书,以及课程的源代码!
QQ:101677771
欢迎加⼊,⼀起讨论学习
原⽣应⽤程序:安卓程序是⽤JAVA或kotlin开发出来的,这种程序是原⽣应⽤程序,原⽣应⽤⽐较流畅,好调⽤,缺点是不同的端需要的开发语⾔不同
web应⽤程序:就web应⽤程序可以直接放到⼿机端来运⾏,web是⽤html+css+js编写的
混合应⽤程序:结合原⽣与web应⽤程序,有些页⾯⽤原⽣的,有些页⾯使⽤web应⽤程序
国内⽐较出名的框架:
appium
airtest 现在是由阿⾥在维护,最开始是运⽤在游戏测试,和appium的功能差不多
uiautomator2(⽤法简单,⾮常python,只⽀持原⽣的,不⽀持其他)
设计哲学:
你没有必要为了⾃动化⽽重新编译你的应⽤或者经任何⽅式修改它(Android/IOS系统⾃带框架)
你不应该被限制在特定的语⾔或框架上来编写运⾏测试(API调⽤,接⼝)
移动端⾃动化框架在⾃动化接⼝⽅⾯不应该重造轮⼦(WebDriver,appium是在selenium的基础上开发的)
移动端⾃动化框架应该开源,不但是在名义上⽽且在精神和实践上都要实⾄名归
2.启动⼀个app⾃动化程序的步骤
打开模拟器,或者连接上⼿机(注意开发者模式以及USB调试模式已经开启,⼿机授权要确认,否则是连接不上的)
在命令窗⼝输⼊adb devices(查看设备名称)
开启appium服务appium客户端代码连接服务
3.appium服务介绍
中⽂设置
除了简单设置,还有⼀些⾼级设置,我们可以看⼀下
保存了可以查看预设,⽅便以后使⽤
编辑配置是进⼊修改环境变量
主机和端⼝号不需要设置,直接可以开启服务器
开启后,可以看到服务器运⾏中,右边三个按钮的功能分别是启动检查器会话,获取原始⽇志,停⽌运⾏服务器
点击后⾃动经记事本打开,如果安装了其他编辑软件,可以选择打开⽅式
服务开启后,就可以使⽤python来进⾏客户端来连接服务
4. appium客户端使⽤
使⽤前确定已经安装了,pip install appium-python-client,安装后,直接导⼊使⽤
看⼀下Remote的源代码
同时appium服务端也会显⽰500的错误
犹豫appium1.20.2版本的,不像之前的版本需要传⼊的必须参数多了,现在只需要传platformName即可,所以具体可以看⾃⼰安装的是什么版本,不过加上更多参数也不受影响
常⽤的caps参数:
platformName 平台名称(Android,IOS)
必选deviceName 设备名称(可选)
udid (和deviceName作⽤⼀样,在不同版本下这个参数重好⽤,所以以后⽤udid代替deviceName)
app apk的存放路径(可选)
appActivity(页⾯名称,相当于web页⾯中title)和 appPackage(包名)
platformVersion 系统版本号(可选,版本不匹配会报错)
noReset 选择True 不重启(意思是app的引导页⾯,缓存数据等不清空,如果选择False,app相当于重新安装了,把之前的数据都清空了)
automationName 驱动名称
browserName 直接测web⽤Chrome
autoWebview 开机进⼊webview模式(开机直接进⼊⽹页模式,不需要进⼊原⽣页⾯)
chromedriverExecutable ⽹页浏览器驱动所放路径(必须是完整路径)
chromedriverExecutableDir ⽹页浏览器驱动所放⽬录
unicodekeyboard 开启unicode编码形式的键盘
resetKeyboard 重启键盘(和上⼀个⼀块配置,两个都设置成True,就可以开启中⽂输⼊,相当于我们的电脑安装输⼊法)
autoGrantPermissions 开启⼿机权限(相当于web端中弹出来的alert弹框,⽆法定位元素,设置了True,就⽅便定位元素)
官⽹上还有很多⽤法,感兴趣的可以参考⼀下:
通过adb获取appPackage和appActivity:
⽅法⼀:adb shell am monitor 监控操作(在cmd中执⾏此命令后,然后在⼿机上或模拟器上操作对应的app,就会显⽰对应的包名)
⽅法⼆:adb logcat | findStr -i displayed 从⽇志进⾏查询包名和页名称
通过aapt获取appPackage和appActivity:
aapt dump badging 全路径.apk
拿到appPackage和appActivity后,可以使⽤包名的⽅式来访问app,代码如下:
from appium.webdriver import Remote
# 启动⼀次请求
# 1.指明需要连接的服务地址和端⼝号
# 2.You must include a platformName capability
caps = {"platformName": "Android",
"udid": "emulator-5554",
"appPackage": "com.lemon.lemonban",
"appActivity": ".activity.WelcomeActivity"}
driver = Remote(command_executor='127.0.0.1:4723/wd/hub',
desired_capabilities=caps)
运⾏结果:
总结:
platformName 必填,其他可选
deviceName重要
app安装apk包,⾃动打开(已经安装过的不会重新安装),apk包路径最好不要有中⽂,不知道为什么我的电脑⽤这种⽅式运⾏⼀直报错,最后也未能解决,所以我使⽤包名运⾏
在复制appActivity时,注意⼀定是app的⾸页页⾯名称,别复制错了
5.adb的使⽤
adb(Android Debug Bridge)安卓调试桥:作⽤就是操作安卓⼿机中的app
相关命令:
adb devices 查看设备是否连接(可以⼿动连接 adb connect 127.0.0.1:5554,⽹上可以搜索不同模拟器的端⼝号)
adb shell 登录设备(进⼊⼿机系统⾥⾯)
adb shell dumpsys activity | find "mFocusedActivity" 查看前台应⽤activity应⽤名称(注意⼀定要打开了app,再去执⾏命令,dumpsys下有很多命令,可以查看帮助⽂档进⾏更多了解)
adb install 电脑/包名.apk 安装软件
adb uninstall 电脑/包名.apk 制裁软件
adb pull ⼿机⽂件路径电脑⽂件路径从⼿机下载/拉⽂件电脑端
adb push 电脑⽂件路径⼿机⽂件路径从电脑推送/上传到⼿机端
adb shell pm list packages 显⽰所有的安装包名
6.Appium启动过程分析手机上可以打html与css的app
客户端通过wd/hub/session发送请求创建⼀个会话session
提供了参数就是cpas
服务端接收到caps信息后,检验caps参数是否合法
adb install io.setting.appium
判断有没有包名
启动app
获取操作系统的版本:
< -P 5037 -s emulator-5554 shell getprop ro.lease
判断包名是否已经安装到⼿机上:
< -P 5037 -s emulator-5554 shell dumpsys package com.lemon.lemon
启⽤app:
< -P 5037 -s emulator-5554 shell am start -W -n com.lemon.lemonban/.activity.WelcomeActivity -S 到此这篇关于python+appium实现⾃动化测试的⽰例代码的⽂章就介绍到这了

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。