当前位置: 首页 > news >正文

python+appium自动化测试如何控制App的启动和退出

由于本人使用的是Android设备做自动化测试,所以以下内容均基于Android系统做出的整理

一、启动app

启动app需要设置Capability参数,而Capability参数放在Desired Capalibity中,Desired Capalibity告诉Appium想要的自动化平台和应用程序,这是一组键值对,主要是用于通知Appium服务器建立需要的session

设置Capability的公共部分

platformName     自动化测试手机的操作系统(Android/iOS)
platformVersion  手机对应的版本(Android 10)
deviceName       连接的设备名(模拟器或真机)

设置Capability 的Android部分

appActivity          通过APK包获取,获取方式在下方有说明
appPackage           通过APK包获取包名,获取方式在下方有说明

Android完整案例:

defstart(self):caps = {"platformName": "Android","deviceName": "U4AIUKFAL7W4MJLR","platforVersion": "9","appPackage": "com.sina.weibo","appActivity": "com.sina.weibo.SplashActivity","autoGrantPermissions": "true","automationName": "UiAutomator2"}self.driver = webdriver.Remote("http://localhost:4723/wd/hub", caps)

1.plateforName的作用?

操作系统,例如:Android、iOS、FirefoxOS

2.deviceName的作用是什么?(获取设备名的方式在下面内容)

设备名,连接的设备名(真机或模拟器)

3.platforVersion的作用是什么?

操作系统版本,对应连接的模拟器或手机的系统版本

4.appActivity和appPackage的作用是什么?(获取的方式在下面内容)

使Appium确切知道应为您的应用程序启动哪个程序包和活动。否则,Appium会尝试从您的应用清单中自动确定这些内容。

5.autoGrantPermissions的作用是什么?

让appium自动授权app权限,如果noReset为True,则该条不生效(该参数为Android独有),对应的值为True或False

6.automationName的作用是什么?

使用引擎,默认为Appium,其中Appium、UiAutomator2、Selendroid、Espresso用于Android,XCUITest用于iOS

7.webdriver.Remote("http://localhost:4723/wd/hub", caps)的作用是什么?

webdriver.Remote实际上就是原生webdriver的子类,另外Remote()构造函数的第一个参数中需要显示指定appium server监听的端口

二、退出App

  1. defteardown(self):

  2. driver.quit()

三、appium实现原理

客户端(即PC端)通过4723端口,向服务端(server)发送代码请求,服务端与移动端(设备:手机或模拟器)通过4724端口进行通信,当服务端接收到请求后,移动端的Bootstrap.jar包,将命令传送给Uiautomator执行点击、滑动的操作。

Bootstrap的作用:启动socket通信,监听4724端口

如下图所示:

appium只是一个框架,调用的自动化框架是Android或iOS本身的框架,默认端口号是4723,本地的IP地址是:http://127.0.0.1,或http://locahost

四、如何获取deviceName?

移动端在“手机->设置->开发者选项”中打开USB调试,PC端按下【Windows+R】,输入cmd,运行cmd,输入adb devices,如下图所示:

图中的device前面的参数即表示设备名:U4AIUKFAL7W4MJLR

五、如何获取apk的appActivity和appPackage?

1、在Android SDK的文件夹下找到aapt.exe应用程序,在"D:\Android\SDK\build-tools\30.0.1"路径下,如下图所示:

2、按下【Windows+R】,输入cmd,运行cmd ,进入该盘,再进入appt.exe所在的文件夹,输入的内容为:“cd D:\Android\SDK\build-tools\30.0.1”,则可以进入该文件夹,进入文件夹后输入“aapt dump badging apk所在的路径+apk名字”,如下图所示即为成功,下图所示为获取到的app的appPackage

下图所示为获取到的app的appActivity

以上内容如有错误的地方,欢迎大家指正!

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你! 

相关文章:

  • Java排序算法之希尔排序
  • nginx服务器
  • golang学习笔记——基础02
  • 滚雪球学Java(09-3):Java中的逻辑运算符,你真的掌握了吗?
  • 20个Golang最佳实践
  • 模拟滴答声
  • 零代码编程:用ChatGPT自动合并多个Word文件
  • Tensorflow2.0:CNN、ResNet实现MNIST分类识别
  • 宝塔https403默认串站问题解决
  • 【数据结构】树与二叉树(十八):树的存储结构——Father链接结构、儿子链表链接结构
  • C++ 编写动态二维double型数据类Matrix
  • IDEA导入jar包
  • ​软考-高级-系统架构设计师教程(清华第2版)【第9章 软件可靠性基础知识(P320~344)-思维导图】​
  • modbusRTU通信简单实现(使用NModbus4通信库)
  • 【喵叔闲扯】--迪米特法则
  • [分享]iOS开发 - 实现UITableView Plain SectionView和table不停留一起滑动
  • [译]前端离线指南(上)
  • Java面向对象及其三大特征
  • Java应用性能调优
  • 阿里云容器服务区块链解决方案全新升级 支持Hyperledger Fabric v1.1
  • 分享自己折腾多时的一套 vue 组件 --we-vue
  • 关于extract.autodesk.io的一些说明
  • 简单数学运算程序(不定期更新)
  • 开年巨制!千人千面回放技术让你“看到”Flutter用户侧问题
  • 它承受着该等级不该有的简单, leetcode 564 寻找最近的回文数
  • 一些基于React、Vue、Node.js、MongoDB技术栈的实践项目
  • 用简单代码看卷积组块发展
  • 做一名精致的JavaScripter 01:JavaScript简介
  • elasticsearch-head插件安装
  • 阿里云移动端播放器高级功能介绍
  • ​LeetCode解法汇总307. 区域和检索 - 数组可修改
  • (11)MATLAB PCA+SVM 人脸识别
  • (4)通过调用hadoop的java api实现本地文件上传到hadoop文件系统上
  • (附源码)spring boot公选课在线选课系统 毕业设计 142011
  • (十六)Flask之蓝图
  • (一)80c52学习之旅-起始篇
  • (转载)Linux网络编程入门
  • *Algs4-1.5.25随机网格的倍率测试-(未读懂题)
  • .md即markdown文件的基本常用编写语法
  • .Net Core和.Net Standard直观理解
  • .NET Framework 4.6.2改进了WPF和安全性
  • .net framework4与其client profile版本的区别
  • .net wcf memory gates checking failed
  • .Net6 Api Swagger配置
  • .Net6使用WebSocket与前端进行通信
  • .sys文件乱码_python vscode输出乱码
  • ::什么意思
  • @AliasFor注解
  • @property括号内属性讲解
  • [ 渗透工具篇 ] 一篇文章让你掌握神奇的shuize -- 信息收集自动化工具
  • [16/N]论得趣
  • [2013AAA]On a fractional nonlinear hyperbolic equation arising from relative theory
  • [2021]Zookeeper getAcl命令未授权访问漏洞概述与解决
  • [ERROR]-Error: failure: repodata/filelists.xml.gz from addons: [Errno 256] No more mirrors to try.
  • [excel与dict] python 读取excel内容并放入字典、将字典内容写入 excel文件