Appium+Python自动化测试之运行App程序示例
作者:zh175578809 发布时间:2023-07-29 01:54:20
在上一篇博客中,已经将环境搭建好了。现在,我们利用搭建的环境来运行一条测试脚本,脚本中启动一个计算器的应用,并实现加法的运算。
创建模拟器
在运行App之前,首先需要创建一个Android模拟器,也可以使用真机来运行,效果更佳。
进到Android SDK的目录,双击运行AVD Manager.exe
点击Create创建一个Android模拟器
输入一个模拟器名称,选择设备类型和API版本,点击进行创建。创建完成后会显示当前所有的设备,选择设备,点击Start启动
第一次启动的时候会有点慢,要等几分钟,启动以后就好了,模拟器刚启动后的界面是这样的
获取应用的packageName和activityName
在写测试脚本之前,要知道被测试apk的packageName和要启动的activityName,如果是第三方的apk,有现成的可以直接使用。这里启动的是模拟器内置的应用,所以要把apk从模拟器中导出来
模拟器中预置的应用都放在手机的system/app目录中,使用adb shell命令进入目录查看计算器应用的apk名称
使用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路径”
输入命令后,第一行的输入中包含应用的包名
package: name='com.android.calculator2' versionCode='17' versionName='4.2.2-3453820'
在输入快到结尾的时候,有一行包含应用启动时打开的activity名称
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
出现> info: Welcome to Appium v1.4.16 (REV ae6877eff263066b26328d457bd285c0cc62430d)这行信息后,就表示Appium启动成功了
Appium启动成功后,运行测试脚本,模拟器会运行计算器应用,计算加法
来源:https://blog.csdn.net/zh175578809/article/details/76862590


猜你喜欢
- 学完了net/http和fasthttp两个HTTP协议接口的客户端实现,接下来就要开始Server的开发,不学不知道一学吓一跳,居然这两个
- MySQL索引优化之分页探索表结构CREATE TABLE `demo` ( `id` int(11) NOT NULL AUT
- django在一个项目的目录结构划分方面缺乏必要的规范,因此不同人的项目组织形式也千奇百怪,而且也很难说谁的做法就比较好。我根据自己的项目组
- 有一个优秀的库可以使用————demjson示范链接http
- 代码如下: <%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%&
- 先以一个大牛的一段关于Python Metapgramming的著名的话来做开头:Metaclasses are deeper magic
- 今天小编来和大家聊一下Python当中的altair可视化模块,并且通过调用该模块来绘制一些常见的图表,借助Altair,我们可以将更多的精
- 我在工作的时候,在测试环境下使用的数据库跟生产环境的数据库不一致,当我们的测试环境下的数据库完成测试准备更新到生产环境上的数据库时候,需要准
- 本文实例讲述了Python实现基于KNN算法的笔迹识别功能。分享给大家供大家参考,具体如下:需要用到:Numpy库Pandas库手写识别数据
- 数据加载分为加载torchvision.datasets中的数据集以及加载自己使用的数据集两种情况。torchvision.datasets
- Python 石头剪刀布小游戏(三局两胜),供大家参考,具体内容如下import randomall_choioces = ['石头
- 首先下载最新的MySQL 5.7.17 Community 压缩版 for Windows 64-bit:官方下载地址:http://dev
- 目前防采集的方法有很多种,先介绍一下常见防采集策略方法和它的弊端及采集对策: 一、判断一个IP在一定时间内对本站页面的访问次数,如果明显超过
- 当1980年Three Rivers公司第一次推出图形用户界面Perq,产生GUI这个概念的时候,不知道他们有没有想过今天图形界面设计竟然会
- Python开发最牛逼的IDE——pycharm(其实其它的工具,例如eclipse也可以写,只不过比较麻烦,需要安装很多的插件,所以说py
- 首先忠心感谢凌宇5942给我的帮助!在他的启迪下我发现了另一种实现flash透明背景的办法,愿与大家共同探讨:凌宇5942告知的解决办法:在
- 什么是Python元类?Python元类是与Python的面向对象编程概念相关的高级功能之一。它确定类的行为,并进一步帮助其修改。用Pyth
- 内容摘要: 网页的色彩搭配往往是网友们感到头疼的问题,尤其是那些完全没有美术基础的网友。到底用
- 算法思路Knuth-Morris-Pratt(KMP)算法是解决字符串匹配问题的经典算法,下面通过一个例子来演示一下:给定字符串"
- Laravel 的上一个 LTS(长期支持)版本是 Laravel 5.1,发布于 2015 年 6 月,按照对 LTS 版本的约定,两年的