Appium(七):Appium API(一) 应用操作
1. 应用操作
本章所罗列的方法主要针对应用的操作,如应用的安装、卸载、关闭、启动等。
把前面的启动代码放在这里,后面只展示不同的部分。
# coding:utf-8
from appium import webdriver
from time import sleep # 初始化
desired_caps = {}
# 使用哪种移动平台
desired_caps['platformName'] = 'Android'
# Android版本
desired_caps['platformVersion'] = '5.1.1'
#使用adb devices -l 查询,当有多台设备时,需要声明
desired_caps['deviceName'] = '127.0.0.1:62001'
#包名
desired_caps['appPackage'] = 'com.android.settings'
#界面名
desired_caps['appActivity'] = '.Settings' # 启动服务
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
1.1 获取应用的包名和界面名
当我们从一个应用跳转到另外一个应用的时候,想输出其包名、界面名或者想在报告中展现对应信息, 我们就可以调用这个属性来进行获取。
# 打印当前包名
print(driver.current_package)
# 打印当前界面名
print(driver.current_activity)

1.2 安装和卸载以及检查应用是否安装
安装应用:
driver.Install_app(app_path):安装应用到设备,需要apk包的路径。
卸载应用:
driver.remove_app(app_id):从设备中删除一个应用。
检查应用是否安装:
driver.is_app_installed(app_id):检查应用是否已经安装。需要传入应用包的名字。返回结果为True或False。
案例:
我们现在就来安装一个应用宝吧,首先用电脑下载一个应用包的apk,放在F盘下。

然后我们将apk拖进模拟器中安装,进入应用包,查看应用包的名字。

这些完成就可以开始我们的实例演示了。
if driver.is_app_installed("com.tencent.android.qqdownloader"):
driver.remove_app("com.tencent.android.qqdownloader")
else:
driver.install_app("E:\yingyongbao_7422130.apk")
#退出driver1
driver.quit()
如果应用宝已经安装,就会卸载应用宝。如果应用宝没有安装,就会安装应用宝。
大家只要运行成功,就可以看到效果了。
1.3 在脚本内启动其他应用
我们经常遇到需要从一个应用跳转到另外一个应用 ,就像我们使用饿了吗的时候,需要跳转到支付宝来进行支付一样。
我们想要实现这种功能,就要使用下面的方法了。
driver.start_activity(appPackage, appActivity):分别传入要打开的应用的包名和界面名。
实例:
打开《设置》,等待三秒后跳转到《通讯录》。
sleep(3) #跳转到短信
driver.start_activity('com.android.contacts', '.activities.PeopleActivity') sleep(5) #退出driver1
driver.quit()
1.4 关闭应用
有的时候我们需要关闭某个应用程序后,再打开新的应用。那么如何关闭应用程序呢?
我们到目前为止,已经学过一种关闭应用的方法了,那就是driver.quit()。但是这种关闭呢,是关闭驱动对象,同时关闭所有关联的应用,关闭后我们是无法使用脚本操作应用的。
如果我们只想关闭当前操作的应用,不关闭驱动对象,我们就可以使用driver.close_app()方法。
1.5 重置应用
driver.reset()
重置应用。相当于“恢复出厂默认值”的效果。这个方法不需要传入参数。
1.6 将应用置于后台
置于后台相信玩过手机的都知道,就是将程序不显示在手机界面上,但是却可以正常运行,最好的例子就是我们常用的QQ了。
方法:
driver.background_app(seconds):app放置到后台一定时间后再回到前台,模拟热启动。这个方法需要传入一个时间,表示在后台停留多少秒。
热启动:表示进入后台回到前台。关机再开这种切断电源的行为可以叫做 ”冷启动。
实例:
打开《设置》,进入后台五秒,再回到前台。
time.sleep(3)
driver.background_app(5)
time.sleep(3)
# 退出driver
driver.quit()
Appium(七):Appium API(一) 应用操作的更多相关文章
- Python Appium 滑动、点击等操作
Python Appium 滑动.点击等操作 1.手机滑动-swipe # FileName : Tmall_App.py # Author : Adil # DateTime : 2018/3/25 ...
- 【Appium】Appium工作原理
参考:http://www.cnblogs.com/zhjsll/p/5698878.html 原作者写的很好,所以直接放在这里. 一.什么是Appium Appium是一个开源.跨平台的测试框架,可 ...
- Appium与Appium Desktop的区别
Appium-Server的配置,在之前的博文已有介绍,基于Python的Appium环境搭建合集,所以在此处就不详细介绍了.今天主要来分享下Appium-Server和Appium desktop在 ...
- Web API与文件操作
前段时间,一直有练习ASP.NET MVC与Web API交互,接下来,Insus.NET再做一些相关的练习,Web API与文件操作,如POST文件至Web API,更新或是删除等. 不管怎样,先在 ...
- Asp.Net Web API 2(CRUD操作)第二课
Asp.Net Web API 2(CRUD操作)第二课 Asp.Net Web API 导航 Asp.Net Web API第一课:入门http://www.cnblogs.com/aehyok ...
- appium --log-timestamp > appium.log
appium --log-timestamp > appium.log
- 封装CoreGraphics的API简化绘图操作
封装CoreGraphics的API简化绘图操作 效果 说明 1. 将CoreGraphics的API接口抽象为对象,让绘图变得简单易懂 2. 简化常用的绘制操作 3. 源码长期更新 源码 https ...
- 【PHP】Thinkphp 七牛云API对接
访问一个网站,图片的流量占的比例是非常高的!在你的服务器硬盘上,图片占的容量也是非常高的. 如果要搞一个图片非常多,用户量又很庞大的网站,那么,得花多少钱烧在服务器上? 这种时候,当然要用第三方图片存 ...
- appium(5)-Appium capabilities
Appium Capabilities Appium server capabilities Capability Description Values automationName Which au ...
- 动手实操(一):如何用七牛云 API 实现相片地图?
实操玩家: 在苹果手机上,我们只要打开定位服务,拍照后便能在相簿中找到地图,地图上显示着在各地拍摄的相片.网站上这种显示方式也并不少见,例如 Flickr.即将关闭的 Panoramio 等. 作为地 ...
随机推荐
- 附012.Kubeadm部署高可用Kubernetes
一 kubeadm介绍 1.1 概述 参考<附003.Kubeadm部署Kubernetes>. 1.2 kubeadm功能 参考<附003.Kubeadm部署Kubernetes& ...
- Chapter 03—Getting Started with graphs
例01:一个简单的例子 一. 图形参数 1. 符号和线条 例02: plot(dose,drugA,type="b",lty=3,lwd=3,pch=1 ...
- centOS7 可以ping通主机不能访问外网
前言: 突然打开自己前不久在虚拟机安装的centOS7系统,发现以前可以来联网突然不能访问外网,在网上看了很多方法,终于解决 问题描述: 连上网,但是ping 不同外网,如ping www.baodu ...
- 第三章 学习Shader所需的数学基础(3)
@[TOC] 1. 顶点的坐标空间变换过程 我们知道,在渲染流水线中,一个顶点要经过多个坐标空间的变换才能最终被画在屏幕上.一个顶点最开始是在模型空间中定义的,它最后会被变换到屏幕空间中,得到真正的屏 ...
- 获取JVM转储文件的Java工具类
在上期文章如何获取JVM堆转储文件中,介绍了几种方法获取JVM的转储文件,其中编程方法是里面唯一一个从JVM内部获取的方法.这里就不演示了其他方法获取正在运行的应用程序的堆转储,重点放在了使用编程来获 ...
- 你真的了解JMM吗?
引言 在现代计算机中,cpu的指令速度远超内存的存取速度,由于计算机的存储设备与处理器的运算速度有几个数量级的差距,所以现代计算机系统都不得不加入一层读写速度尽可能接近处理器运算速度的高速缓存(Cac ...
- AQS系列(二)- ReentrantLock的释放锁
前言 在AQS系列(一)中我们一起看了ReentrantLock加锁的过程,今天我们看释放锁,看看老Lea那冷峻的思维是如何在代码中笔走龙蛇的. 正文 追踪unlock方法: public void ...
- docker实践之docker-compose部署mysql
文章目录 docker实践之docker-compose部署mysql 1.安装部署docker 2.编写docker-compose文件 3.编写配置文件和初始化文件 4.启动数据库 5.检查初始化 ...
- 2017 CCPC秦皇岛 E题 String of CCPC
BaoBao has just found a string of length consisting of 'C' and 'P' in his pocket. As a big fan of ...
- HihoCoder 1398 网络流 - 最大权闭合子图
周末,小Hi和小Ho所在的班级决定举行一些班级建设活动. 根据周内的调查结果,小Hi和小Ho一共列出了N项不同的活动(编号1..N),第i项活动能够产生a[i]的活跃值. 班级一共有M名学生(编号1. ...