python+appium+真机测试
appium环境搭建
- 操作系统: Windows 10
- 被测平台: Android真机
- appium服务器: appium Desktop
- appium客户端: python-client
- 测试的APP:小米计算器
安装Android SDK
在安装Android开发环境之前,需要先安装JAVA的开发环境!
Android SDK已经不再提供完整的独立下载,需要通过Android Studio安装:
Android Studio下载地址:https://developer.android.google.cn/studio
这里以windows版本为例,下载好了打开安装程序,记得勾选Android Virtual Device,然后选择安装路径并安装
首次启动Android Studio会弹出提示框,如图所示:

提示Android Studio没有检查到Android SDK,因为我们没有单独安装和配置Android SDK,所以单击“Cancel”按钮,继续安装。
勾选【Android SDK】 和【Android SDK Platform】选项,并通过【Android SDK Location】选择SDK的安装路径。
之后点击【Finish】开始下载安装SDK,整个过程比较漫长,需要等待一段时间。
安装完成后,就可以创建Android项目,因为用真机,所以在这就不讲模拟器的设置了。
配置Android 环境变量
在我的电脑右键菜单中选择【属性】→【高级系统设置】→【高级】→【环境变量】→【系统变量】下的【新建】按钮,添加ANDROID_HOME:
变量名: ANDROID_HOME
变量值: D:\Android\SDK # SDK的安装位置
单击【path】变量名,点击【编辑】按钮,追加如下配置:
%ANDROID_HOME%\platform-tools
%ANDROID_HOME%\tools
%ANDROID_HOME%\build-tools\29.0.3 # 后面的版本自己去目录看下,不要照抄
配置完成后在命令行输入命令adb,能正常执行就好了
安装appium Desktop
appium为c/s架构,Server主要用来监听我们的移动设备,接收Client(客户端)发来的JSON请求,解析后驱动移动设备运行测试脚本。
Github下载地址:https://github.com/appium/appium-desktop
进入网站后,找到标题Download Appium Desktop下,点击Release链接就可以看到各个版本的安装包了。
下载完了后进行傻瓜式安装就好了。
安装python的appium测试库
appium client支持多种编程语言,这里以python为例,通过pip命令安装:
pip install Appium-Python-Client
至此自动化测试环境就完成了。
测试准备和编写脚本
开发者模式
首先USB手机连接电脑,手机进入开发者模式(不同品牌手机操作方法不同),在开发者选项中开启USB调试。
在windows命令行中使用adb devices 查看设备连接情况,在List of devices attached下能看到一个实例ID说明监听成功:

此时windows命令行输入adb install D:\com.miui.calculator.apk可以安装小米计算器APP

注意APK的所在路径和文件名
appium Desktop
打开appium客户端,点击【start server】启动appium server:

菜单栏选择【File】下的【New Session Window】进行配置:

如何获取app的appPackage名和appActivity名?
打开windows命令行,输入命令aapt dump badging D:/com.miui.calculator.apk可以获取到,如下图所示
JSON配置信息:
{
"platformName": "Android", # 测试的平台,安卓或者ios
"platformVersion": "10", # 系统版本,此处代表安卓10
"deviceName": "OnePlus 7 pro", # 设备名称,填手机型号就行,随便填也可
"app": "D:/com.miui.calculator.apk", # app的安装包的位置
"appPackage": "com.miui.calculator", # app的包名
"appActivity": "com.miui.calculator.cal.CalculatorActivity" # app的activity名
}
简单配置完成后,点击右下角的【start session】
可以看到测试机打开了小米计算器
元素定位
如图,可以看到进入小米计算器的APP画面,并且出现了权限设置的问题。

这些权限按钮什么的都是可以定位到的,现在在appium手机画面预览中点击【同意】按钮,右边会出现元素的各种属性。
可以看到id和xpath定位等,这个操作跟selenium定位一样,优先使用id就好,没有id就使用其他定位方式。
这时候在测试机上点击【同意】按钮,测试机进入了小米计算器,此时appium的画面还没有变,因为需要点击上面的【refresh】按钮来实时获取手机的画面,然后根据需求找出各个按钮的定位就可以编写测试脚本了。
编写脚本
现在来写一个简单的脚本操作一下小米计算器,计算5×9=45是否正确:
from appium import webdriver
from time import sleep
# 配置信息,字典类型,直接复用上面的json就好
desired_caps = {
"platformName": "Android",
"platformVersion": "10",
"deviceName": "OnePlus 7 pro",
"app": "D:/com.miui.calculator.apk",
"appPackage": "com.miui.calculator",
"appActivity": "com.miui.calculator.cal.CalculatorActivity"
}
# 传入appium server的host+path,还有配置信息
driver = webdriver.Remote(command_executor='http://localhost:4723/wd/hub',
desired_capabilities=desired_caps)
sleep(3)
# 同意读取手机状态和身份
driver.find_element_by_id('android:id/button1').click()
# 同意获取电话权限
driver.find_element_by_id('com.android.permissioncontroller:id/permission_allow_button').click()
# 点击5
driver.find_element_by_id('com.miui.calculator:id/btn_5_s').click()
# 点击乘号
driver.find_element_by_id('com.miui.calculator:id/btn_mul_s').click()
# 点击9
driver.find_element_by_id('com.miui.calculator:id/btn_9_s').click()
# 点击等号
driver.find_element_by_id('com.miui.calculator:id/btn_equal_s').click()
# 判断结果是否等于45
result = driver.find_element_by_id('com.miui.calculator:id/result').text
if result == '= 45':
print('正确')
else:
print('错误')
sleep(3)
# 退出测试
driver.quit()
运行脚本的效果:

python+appium+真机测试的更多相关文章
- appium 真机测试问题 出现 instruments crashed on startup
1.appium 真机测试的时候 instruments crashed on startup,必须在真机上打开UI Automation 在设置里: Developer->Enable UI ...
- Appium +Python 连接真机测试
1.数据线连接电脑和手机: 2.用adb获取手机的UUID:cmd-> adb devices 前面的就是你手机的UUID 3.打开appium,选择手机的安卓版本(关于手机中查看),填写手机的 ...
- appium+python自动化测试真机测试时报错“info: [debug] Error: Could not extract PIDs from ps output. PIDS: [], Procs: ["bad pid 'uiautomator'"]”
刚开始启动服务时,弹出授权提示,以为是手机app权限问题,后来debug后,发现了一个警告日志:UiAutomator did not shut down fast enough, calling i ...
- python+appium真机运行登录例子
一.手机USB连接电脑(手机打开调试模式) 验证:cmd -> 输入adb devices,查看手机的UDID.显示如下表示 连接成功 二.启动Appium服务 1. 启动Appium,点击 右 ...
- iOS系列 基础篇 01 构建HelloWorld,剖析并真机测试
iOS基础 01 构建HelloWorld,剖析并真机测试 前言: 从控制台输出HelloWorld是我们学习各种语言的第一步,也是我们人生中非常重要的一步. 多年之后,我希望我们仍能怀有学习上进的心 ...
- 解决Xcode真机测试时ineligible devices的问题
升级了Xcode到6.3,连接真机测试时,出现不能选择设备.如图: 设备系统版本是8.3的,Xcode连接其他低系统版本的设备做真机测试时就不会有这个问题. 有人说这是Xcode6.3的bug. 我的 ...
- iOS—Xcode 7真机测试
Xcode 7真机测试详解 1.准备 注意:一定要让你的真机设备的系统版本和app的系统版本想对应,如果不对应就会出现一个很常见的问题:could not find developer disk im ...
- iOS 真机测试 App installation failed
真机测试的过程中,出现这种Bug This application's application-identifier entitlement does not match that of the in ...
- Xcode真机测试could not find developer disk image解决方法
原文地址:http://my.oschina.net/u/2340880/blog/521700 Xcode真机测试could not find developer disk image解决方法 在使 ...
随机推荐
- H5新增特性
1.pattern:写正则,但是需要和form表单连着用 2.WebSocket "网络套接字", 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议.在 W ...
- 透过现象看webpack处理css文件中图片路径转换的具体过程
webpack是目前使用比较流行的一个前端模块打包器,前端的任何资源都被当成一个模块来处理,如图片.css文件等等.在基于webpack构建的前端项目中,一般都会配置有关css文件处理的规则,这其中也 ...
- Django面试集锦(1-50)
目录 1.Django ORM查询中select_related和prefetch_related的区别? 2.only与defer的用法? 3.Django ORM是什么? 4.Django创建项目 ...
- 页面置换算法之Clock算法
1.前言 缓冲池是数据库最终的概念,数据库可以将一部分数据页放在内存中形成缓冲池,当需要一个数据页时,首先检查内存中的缓冲池是否有这个页面,如果有则直接命中返回,没有则从磁盘中读取这一页,然后缓存到内 ...
- 在VMware中如何清理多余的空间
问题描述 平时用的编程计算机只有250G空间,c盘和d盘,今天准备做实验,发现删除虚拟机中系统的内容不但没有减少空间,反而增加了,这时我意识到虚拟机内部可能与咱们想象的操作模式不一样. 解决办法 我的 ...
- 在jsp页面下, 让eclipse完全支持HTML/JS/CSS智能提示
我们平时用eclipse开发jsp页面时智能提示效果不太理想,今天用了两个小时发现了eclipse也可以像Visual Studio 2008那样完全智能提示HTML/JS/CSS代码,使用eclip ...
- 1. 学习Linux操作系统
1.熟练使用Linux命令行(鸟哥的Linux私房菜.Linux系统管理技术手册) 2.学会Linux程序设计(UNIX环境高级编程) 3.了解Linux内核机制(深入理解LINUX内核) 4.阅读L ...
- One Stage目标检测
在计算机视觉中,目标检测是一个难题.在大型项目中,首先需要先进行目标检测,得到对应类别和坐标后,才进行之后的各种分析.如人脸识别,通常是首先人脸检测,得到人脸的目标框,再对此目标框进行人脸识别.如果该 ...
- Python原来这么好学-2.1节: 选择PyCharm作为开发工具
这是一本教同学们彻底学通Python的高质量学习教程,认真地学习每一章节的内容,每天只需学好一节,帮助你成为一名卓越的Python程序员: 本教程面向的是零编程基础的同学,非科班人士,以及有一定编程水 ...
- Linux中Hadoop的安装与配置
一.准备 1,配通网络 ping www.baidu.com 之前安装虚拟机时配过 2,关闭防火墙 systemctl stop firewalld systemctl disable firewal ...

