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中映射类型的内建函数和工厂函数
Aug 19 Python
代码讲解Python对Windows服务进行监控
Feb 11 Python
python提取图像的名字*.jpg到txt文本的方法
May 10 Python
Python装饰器模式定义与用法分析
Aug 06 Python
python 将json数据提取转化为txt的方法
Oct 26 Python
python中for循环输出列表索引与对应的值方法
Nov 07 Python
python实现植物大战僵尸游戏实例代码
Jun 10 Python
python内存监控工具memory_profiler和guppy的用法详解
Jul 29 Python
使用Python为中秋节绘制一块美味的月饼
Sep 11 Python
使用Python实现批量ping操作方法
May 06 Python
Django model重写save方法及update踩坑详解
Jul 27 Python
Python中使用tkFileDialog实现文件选择、保存和路径选择
May 20 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
使用array mutisort 实现按某字段对数据排序
2013/06/18 PHP
关于PHP session 存储方式的详细介绍
2013/06/25 PHP
WordPress中Gravatar头像缓存到本地及相关优化的技巧
2015/12/19 PHP
php静态成员方法和静态的成员属性的使用方法
2017/10/26 PHP
JavaScript去除空格的几种方法
2006/10/03 Javascript
在IE下获取object(ActiveX)的Param的代码
2009/09/15 Javascript
JS遍历ul下的li点击弹出li的索引的实现方法
2016/09/19 Javascript
jQuery内存泄露解决办法
2016/12/13 Javascript
输入框点击时边框变色效果的实现方法
2016/12/26 Javascript
Bootstrap多级菜单的实现代码
2017/05/23 Javascript
JS实现json的序列化和反序列化功能示例
2017/06/13 Javascript
[js高手之路]设计模式系列课程-发布者,订阅者重构购物车的实例
2017/08/29 Javascript
Vue无限滑动周选择日期的组件的示例代码
2018/07/18 Javascript
Nuxt默认模板、默认布局和自定义错误页面的实现
2020/05/11 Javascript
Vue实现boradcast和dispatch的示例
2020/11/13 Javascript
python字典的常用操作方法小结
2016/05/16 Python
Python探索之pLSA实现代码
2017/10/25 Python
python自动发送邮件脚本
2018/06/20 Python
python3爬虫学习之数据存储txt的案例详解
2019/04/24 Python
Django1.11配合uni-app发起微信支付的实现
2019/10/12 Python
解决python replace函数替换无效问题
2020/01/18 Python
python操作redis数据库的三种方法
2020/09/10 Python
HTML5 新标签全部总汇(推荐)
2016/06/13 HTML / CSS
美国购买和销售礼品卡平台:Raise
2017/01/13 全球购物
什么是View State?
2013/01/27 面试题
低碳生活倡议书
2014/04/14 职场文书
汽车销售经理岗位职责
2014/06/09 职场文书
学校领导干部民主生活会整改方案
2014/09/29 职场文书
病人家属写给医院的感谢信
2015/01/23 职场文书
世界红十字日活动总结
2015/02/10 职场文书
反邪教观后感
2015/06/11 职场文书
入党心得体会
2019/06/20 职场文书
创业计划书之寿司
2019/07/19 职场文书
网络新闻该怎么写?这些写作技巧你都知道吗?
2019/08/26 职场文书
梳理总结Python开发中需要摒弃的18个坏习惯
2022/01/22 Python
win10电脑双屏显示一个黑屏怎么办?win10电脑双屏显示一个黑屏解决方法
2022/07/15 数码科技