Appium+Python自动化测试(二)--运行App程序示例

2023-11-01

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

创建模拟器

在运行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启动成功后,运行测试脚本,模拟器会运行计算器应用,计算加法

这里写图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Appium+Python自动化测试(二)--运行App程序示例 的相关文章

随机推荐

  • LeetCode 62. 不同路径

    欢迎来到茶色岛独家岛屿 本期将为大家揭晓LeetCode 62 不同路径 做好准备了么 那么开始吧 一 题目名称 LeetCode 62 不同路径 二 题目要求 一个机器人位于一个 m x n 网格的左上角 起始点在下图中标记为 Start
  • git 导出版本之间差异文件

    查看 commit id 首先用 git log 查看版本库日志 找出需要导出的 commit id git log pretty oneline 456bcbccd91278f7fdf6bf11bc73c4e3a6193c7f HEAD
  • 基于深度神经网络的社交媒体用户级心理压力检测

    User Level Psychological Stress Detection from Social Media Using Deep Neural Network 基于深度神经网络的社交媒体用户级心理压力检测 ABSTRACT It
  • 软件anyconnec-win安装下载

    anyconnec win介绍 1 安装下载地址 http www drv5 cn sfinfo 14287 html softdown 找到适合自己操作系统的版本 下载并安装 2 直接安装下载点击next就ok了 需要注意的是 下载安装完
  • IDEA小技巧

    IDEA小技巧 常用快捷键 Alt Insert 可以自动生成get set toString方法 Alt Enter 可以帮助解决各种报错 抛个异常啊 导个包啊之类的 常见行操作 Shift Enter 添加空行 相比普通换行 不管光标在
  • [Pytorch系列-48]:如何查看和修改预定义神经网络的网络架构、网络参数属性

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 https blog csdn net HiWangWenBing article details 121342500 目录 第1章 Fin
  • python简单作图的一些设置(4.11课堂笔记)

    1图片布局 1 画布大小 宽 高 英寸 A4 21cm 29 7cm 约7英寸 还要减去页边距 fig plt figure figsize 4 7 2 画图 纸的形状决定图的形状 2 1 不能控制图的形状 ax fig add subpl
  • 力扣每日一题:915. 分割数组【思维题】

    给定一个数组 nums 将其划分为两个连续子数组 left 和 right 使得 left 中的每个元素都小于或等于 right 中的每个元素 left 和 right 都是非空的 left 的长度要尽可能小 在完成这样的分组后返回 lef
  • Redis崩了,我成功把锅甩给了隔壁组

    项目起不来了 项目又起不来了 又双叒叕 上周经常听到组里同事说项目又双叒叕挂了 Redis连不上 笔者在另一套正常的环境忙着开发新需求 没空关心这个问题 PS 反正我的环境能用 先忙完我的再说 于是乎 看了一眼日志 连接数过多 emmm 顺
  • nodejs格式化输入

    需求 比如我现在要格式为Axxx xxx xxx是数字 的格式 但是输入有可能为A1 2这种情况 就需要补零 变成A001 002 代码实现 const regex A d d 正则匹配桩号合法格式 const match input ma
  • baidu 百度搜索 命令

    命令 含义 双引号 xx 关键字全匹配 减号 xxx 排除xxx关键字 Inurl xxx 在url中匹配关键字 intitle xxx title标签中进行匹配 Site xxx 指定域名下搜索 Filetype txt 指定文件类型 例
  • 深入理解Python装饰器与闭包

    最初学习Python时 了解到装饰器与闭包的概念 在网上看了很多博客与教程 总觉得自己的理解还是不那么透彻 最近开始学习 流畅的Python 一书 书中对与闭包和装饰器有详细的解释 我觉得写的非常到位 现在把我的理解分享出来与大家共同探讨
  • Android开发失业50天,面了10家公司,唯二的offer也主动拒了

    最近在论坛看到这样一个帖子 坐标深圳 4 月上旬公司解散 现在想想好像是假解散 真裁员 这一个半月以来 从朋友内推 到拉勾 Boss 直聘 再到猎聘 智联招聘 从开始的精准投递 到后来的海投 加起来投递了上百家公司吧 面了差不多 10 家公
  • MinGW下载并配置gcc/g++编译环境

    本文将讲解如何下载MinGW并配置gcc g 编译环境 方案一 官网下载 一 下载MinGW 在MinGW官网中下载 mingw get setup exe 官网传送门 http www mingw org 如果您下载的过程非常艰难 请采用
  • 【马士兵】Python基础--05(循环)

    Python基础 05 文章目录 Python基础 05 range函数 while循环 for item in 迭代对象 break continue else语句 循环嵌套 range函数 这个函数生成的是一个整数序列 他的返回值是一个
  • 动态代理 [用jdk实现]

    一 java 的jdk動態代理 用JDK實現的動態代理 被代理的對象必須實現一個接口才可以 其實現主是通過java lang reflect Proxy類和 java lang reflect InvocationHandler接口 二 本
  • android实现夜间模式_Android中的夜间模式实现

    android实现夜间模式 Easiest way to implement night mode in android 在Android中实现夜间模式的最简单方法 Android has recently introduced Dark
  • Vue环境搭建(node安装,环境配置,运行项目)

    Vue环境搭建 node安装 环境配置 运行项目 一 安装node 1 去官网下载node之后 推荐安装稳定版本 LTS node官网下载地址 2 查看node安装成功否 node v 查看node版本 npm v 查看npm版本 wher
  • ctkPluginFramework编译qt_vs2017_gcc

    ctkPluginFramework编译qt5 12 vs2017 gcc4 8 前言 使用ctkPluginFramework作为插件系统框架的确有着众多开发上的优势 最近收到一些站内信 大家都想使用ctkPluginFramework但
  • Appium+Python自动化测试(二)--运行App程序示例

    在上一篇博客中 已经将环境搭建好了 现在 我们利用搭建的环境来运行一条测试脚本 脚本中启动一个计算器的应用 并实现加法的运算 创建模拟器 在运行App之前 首先需要创建一个Android模拟器 也可以使用真机来运行 效果更佳 进到Andro