Appium+Python自动化测试之运行App程序示例


Posted in Python onJanuary 23, 2019

在上一篇博客中,已经将环境搭建好了。现在,我们利用搭建的环境来运行一条测试脚本,脚本中启动一个计算器的应用,并实现加法的运算。

创建模拟器

在运行App之前,首先需要创建一个Android模拟器,也可以使用真机来运行,效果更佳。

进到Android SDK的目录,双击运行AVD Manager.exe

Appium+Python自动化测试之运行App程序示例

点击Create创建一个Android模拟器

Appium+Python自动化测试之运行App程序示例

输入一个模拟器名称,选择设备类型和API版本,点击进行创建。创建完成后会显示当前所有的设备,选择设备,点击Start启动

Appium+Python自动化测试之运行App程序示例

第一次启动的时候会有点慢,要等几分钟,启动以后就好了,模拟器刚启动后的界面是这样的

Appium+Python自动化测试之运行App程序示例

获取应用的packageName和activityName

在写测试脚本之前,要知道被测试apk的packageName和要启动的activityName,如果是第三方的apk,有现成的可以直接使用。这里启动的是模拟器内置的应用,所以要把apk从模拟器中导出来

模拟器中预置的应用都放在手机的system/app目录中,使用adb shell命令进入目录查看计算器应用的apk名称

Appium+Python自动化测试之运行App程序示例

使用ls *.apk命令列出所有的apk,查找到apk文件为Calculator.apk,然后使用adb pull system/app/Calculator.apk d:/命令将文件导出到电脑中。

将apk导出后,Android SDK中有一个aapt的工具可以用来查看应用的包名和要启动的activity名称,工具在SDK的build-tools目录下,命令格式为”aapt dump badging apk路径”

Appium+Python自动化测试之运行App程序示例

输入命令后,第一行的输入中包含应用的包名

package: name='com.android.calculator2' versionCode='17' versionName='4.2.2-3453820'

在输入快到结尾的时候,有一行包含应用启动时打开的activity名称

Appium+Python自动化测试之运行App程序示例

launchable-activity: name='com.android.calculator2.Calculator' label=” icon='

这样就得到了packageName和activityName

Capability

Capability是一个字典,配置的是自动化测试的一些必要信息,包含了本次测试的平台名称及版本号、启动的是浏览器还是app等,客户端将这些告诉服务器,服务器根据这些信息创建自动化会话。这里只介绍跟Android平台相关并且常用的几个

automationName:定义测试引擎,使用的android-sdk版本小于17时,使用Selendroid,大于等于17时使用Appium,默认是Appium

platformName:测试平台,通常用于移动设备,值有:Android、IOS、FirefoxOS

platformVersion:测试平台版本,根据设备的固件版本指定,例如Android的4.2、IOS的7.1

deviceName:设备名称

app:要安装的app的文件路径,可以是本地的绝对路径,也可以是远程网络路径

browserName:启动的浏览器名称,测试的是web应用时指定,Android平台设置为Chrome

newCommandTimeout:为了结束Appium会话,会设置一个等待从客户端发送命令的超时时间,默认为60秒,一般不需要设置

autoLaunch:测试时是否需要自动运行app

appPackage:设置app的包名,告诉Appium需要启动的app

appActivity:设置启动的Activity

appWaitActivity:要等待的Activity

appWaitPackage:要等待的appPackage

unicodeKeyboard:是否使用unicode键盘输入,在输入中文字符和unicode字符时设置为true

resetKeyboard:是否将键盘重置为初始状态,设置了unicodeKeyboard时,在测试完成后,设置为true,将键盘重置

上述的几个Capability只是在测试中经常用到的,更多的Capability在用到的时候可以在网上查阅

编写测试脚本

新建test.py,输入下面的代码

# -*- coding: utf-8 -*-

from appium import webdriver

desired_caps = {
    'platformName': 'Android',
    'deviceName': 'emulator-5554',
    'platformVersion': '4.2',
    'appPackage': 'com.android.calculator2',
    'appActivity': 'com.android.calculator2.Calculator'
  }
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
driver.find_element_by_name('7').click()
driver.find_element_by_name('+').click()
driver.find_element_by_name('8').click()
driver.find_element_by_name('=').click()

保存文件,打开Appium,点击右上角的三角形按钮启动Appium

Appium+Python自动化测试之运行App程序示例

出现> info: Welcome to Appium v1.4.16 (REV ae6877eff263066b26328d457bd285c0cc62430d)这行信息后,就表示Appium启动成功了

Appium+Python自动化测试之运行App程序示例

Appium启动成功后,运行测试脚本,模拟器会运行计算器应用,计算加法

Appium+Python自动化测试之运行App程序示例

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python利用operator模块实现对象的多级排序详解
May 09 Python
教你学会使用Python正则表达式
Sep 07 Python
Python处理CSV与List的转换方法
Apr 19 Python
python dataframe向下向上填充,fillna和ffill的方法
Nov 28 Python
Python实现账号密码输错三次即锁定功能简单示例
Mar 29 Python
python os模块简单应用示例
May 23 Python
pyqt5实现绘制ui,列表窗口,滚动窗口显示图片的方法
Jun 20 Python
python实现的按要求生成手机号功能示例
Oct 08 Python
TensorFlow keras卷积神经网络 添加L2正则化方式
May 22 Python
django美化后台django-suit的安装配置操作
Jul 12 Python
Linux安装Python3如何和系统自带的Python2并存
Jul 23 Python
python 利用百度API识别图片文字(多线程版)
Dec 14 Python
Python+OpenCV图片局部区域像素值处理详解
Jan 23 #Python
Python实现查找数组中任意第k大的数字算法示例
Jan 23 #Python
Appium Python自动化测试之环境搭建的步骤
Jan 23 #Python
python读取图片任意范围区域
Jan 23 #Python
Python基于plotly模块实现的画图操作示例
Jan 23 #Python
python实现剪切功能
Jan 23 #Python
对python实现合并两个排序链表的方法详解
Jan 23 #Python
You might like
《PHP编程最快明白》第二讲 数字、浮点、布尔型、字符串和数组
2010/11/01 PHP
thinkphp5.1 文件引入路径问题及注意事项
2018/06/13 PHP
js每次Title显示不同的名言
2008/09/25 Javascript
关于onScroll事件在IE6下每次滚动触发三次bug说明
2011/09/21 Javascript
JS.GetAllChild(element,deep,condition)使用介绍
2013/09/21 Javascript
jquery中show()、hide()和toggle()用法实例
2015/01/15 Javascript
jquery实现两边飘浮可关闭的对联广告
2015/11/27 Javascript
Node.js本地文件操作之文件拷贝与目录遍历的方法
2016/02/16 Javascript
JavaScript之排序函数_动力节点Java学院整理
2017/06/30 Javascript
js中json对象和字符串的理解及相互转化操作实现方法
2017/09/22 Javascript
bootstrap fileinput插件实现预览上传照片功能
2018/01/23 Javascript
vue-lazyload图片延迟加载插件的实例讲解
2018/02/09 Javascript
vue.js项目nginx部署教程
2018/04/05 Javascript
JavaScript定时器常见用法实例分析
2019/11/15 Javascript
理解JavaScript中的对象
2020/08/25 Javascript
[00:53]TI3正赛第三天 DK怒破A队不败金身 现场国旗飘扬热血激昂
2013/08/10 DOTA
[00:31]2016完美“圣”典风云人物:国士无双宣传片
2016/12/04 DOTA
Python实现扫描指定目录下的子目录及文件的方法
2014/07/16 Python
python实现查询苹果手机维修进度
2015/03/16 Python
python3中bytes和string之间的互相转换
2017/02/09 Python
django基础之数据库操作方法(详解)
2017/05/24 Python
tensorflow识别自己手写数字
2018/03/14 Python
python中pip的使用和修改下载源的方法
2019/07/08 Python
Python爬虫实现自动登录、签到功能的代码
2020/08/20 Python
详解python命令提示符窗口下如何运行python脚本
2020/09/11 Python
Farnell德国:电子元器件供应商
2018/07/10 全球购物
泰国健康和美容服务预订网站:GoWabi
2019/06/03 全球购物
国际花店:Pickup Flowers
2020/04/10 全球购物
学校安全检查制度
2014/01/27 职场文书
学雷锋志愿服务月活动总结
2014/03/09 职场文书
乡镇三项教育实施方案
2014/03/30 职场文书
幼儿园教师节感谢信
2015/01/23 职场文书
财务部会计岗位职责
2015/02/03 职场文书
魂断蓝桥观后感
2015/06/10 职场文书
2016年春节问候语
2015/11/11 职场文书
导游词之江南周庄
2019/12/06 职场文书