由于个人的强迫症缘故,代码均没有做实际测试,由于公司电脑比较卡,自己电脑强迫症,相信各位知道大概都可以找解决方案,解决不了就找我私聊
一、准备工作
安装链接
出现了手机版本过高
解决方案
课程地址:链接
二、开始
1、首先查看手机版本信息
点开手机或者模拟机的本机信息
2、安装pip包
pip install appium-python-client
3、abd基本命令
# 链接服务器
abd connect 127.0.0.1:62001
# 查看链接哪台服务器
abd devices
4、查看包名和启动页面
需要进入你安卓sdk安装目录的build-tools中找到你想用的版本的目录下进行cmd
# 注意下面不要带有中文路径
aapt dump badging xxx盘下面的apk安装包
往下滑找到启动页面
5、模拟器安装apk
只需要拖着app进入到模拟器即可
6、了解执行流程
三、py代码打开模拟器
1、实现app在模拟器上打开
from appium import webdriver
from appium.options.common import AppiumOptions
desired_caps = {
"platformName":"Android", #操作系统
"platformVersion":"5.1.1", #操作版本 根据查看手机版本信息获取
"deviceName":"xiaomi", #设备名称 可以随便写 没有特殊限制
"appPackage":"", #包名 根据命令获取
"appActivity":"", #入口启动项目页面
"noReset":True
}
# 这边看视频版本有些老了 就网上找到其他博主的代码复制了过来
option = AppiumOptions()
option.set_capability("platformName", "Android")
option.set_capability("platformVersion", "5.1.1")
option.set_capability("deviceName", "xiaomi")
option.set_capability("noReset", True)
option.set_capability("appPackage", "com.tencent.qqlite")
option.set_capability("appActivity", "com.tencent.mobileqq.activity.SplashActivity")
# 这边对应端口就看你安装appium对应的端口换掉就可以了
driver = webdriver.Remote('http://localhost:4723/wd/hub', options=option)
2、appium日志查看
查看对应的日志即可
- 蓝色:代表执行了对应安卓sdk的日志
- 黄色:代表警告可以不看
- 灰色:代表py代码通过命令执行对应appiumServer的操作
日志中显示的执行流程
随后一直重复执行http请求……等等
四、定位工具(注意每个都会在app模拟器中装入软件,需要卸载掉再换方式连接)
4.1安卓sdk自带的定位工具
1、使用工具定位
采用的是安卓sdk自带的定位工具在目录
E:\app\android-sdk-windows\tools
的uiautomatorviewer.bat
打开后点击这个即可 这个也可以做刷新操作,会刷新同步app的现在的页面
定位的话就找对应的点着屏幕去定位吧
2、uiautomatorviewer.bat常见的标签
- text
- resoureid
- class:元素标签
- content-desc:元素功能描述(一般语音播报等、比如淘宝)
- 再其次下面就是是否点击等事件(关注比较少)
4.2appium带的定位工具
1、启动
先启动,再点击放大镜
2、定位元素
点击到对应的选框
4.3weditor定位工具
1、安装
uiautomator2其实是python使用sdk写的第三方库,对appUi自动化测试框架
执行命令
- 命令1
pip install Uiautomator2
- 命令2推送一个包到模拟器上
python -m uiautomator2 init
- 命令3
pip install weditor
- 命令4确认安装
weditor --help
2、使用
要确定你的终端模拟器是连接的
# 打开
weditor
现在通过网页打开这个页面
绿色的小树苗就是连接成功的表示
旁边按钮是刷新页面
点击对应元素即可看到对应元素的信息
五、py定位元素
由于跟web差不多本人就不在往下学习了 遇到问题chatgpt让他写代码 你看了记录下学习就可以了
from appium import webdriver
from appium.options.common import AppiumOptions
from appium.webdriver.common.appiumby import AppiumBy
desired_caps = {
"platformName":"Android", #操作系统
"platformVersion":"5.1.1", #操作版本 根据查看手机版本信息获取
"deviceName":"xiaomi", #设备名称 可以随便写 没有特殊限制
"appPackage":"", #包名 根据命令获取
"appActivity":"", #入口启动项目页面
"noReset":True
}
# 这边看视频版本有些老了 就网上找到其他博主的代码复制了过来
option = AppiumOptions()
option.set_capability("platformName", "Android")
option.set_capability("platformVersion", "5.1.1")
option.set_capability("deviceName", "xiaomi")
option.set_capability("noReset", True)
option.set_capability("appPackage", "com.tencent.qqlite")
option.set_capability("appActivity", "com.tencent.mobileqq.activity.SplashActivity")
# 这边对应端口就看你安装appium对应的端口换掉就可以了
driver = webdriver.Remote('http://localhost:4723/wd/hub', options=option)
# 通过resourceid属性定位
element_input = driver.find_element(AppiumBy.ID, "xxxxx")
# 输入
element_input.send_keys("xxxxxx")
# 单个定位
driver.find_element(AppiumBy.ANDROID_UIAUTOMATOR, 'new UiSelector().text("相机")')
# 组合定位
element_btn = driver.find_element(AppiumBy.ANDROID_UIAUTOMATOR, 'new UiSelector().text("相机").resourceId("xxxx")')
# 点击事件
element_btn.click()
六、滑动
七、测试框架学习
链接