appium入门篇之desired capabilities(2)
1、appium工作原理

- 启动appium server
- appium client 发送Desired Capabilities信息给appium server,appium server返回一个session id给client
- appium client发送指令给appium server,appium server把命令发送到移动设备上去执行
- 移动端设备将执行结果返回给appium server,appium server再返回给client
desired capabilities
desired capabilities是什么,它的作用是告诉appium server被测试apk相关的信息,移动设备相关的信息。直接上官网的解释,地址:
https://github.com/appium/appium/blob/master/docs/en/writing-running-appium/caps.md
Desired Capabilities are keys and values encoded in a JSON object, sent by Appium clients to the server when a new automation session is requested. They tell the Appium drivers all kinds of important things about how you want your test to work. Each Appium client builds capabilities in a way specific to the client's language, but at the end of the day, they are sent over to Appium as JSON objects.
2、准备工作
- 启动安卓模拟器,并打开开发者模式
- 启动appium server
PS C:\Users\StephenWang> appium -a 127.0.0.1 -p 4723
[Appium] Welcome to Appium v1.13.0
[Appium] Non-default server args:
[Appium] address: 127.0.0.1
[Appium] Appium REST http interface listener started on 127.0.0.1:4723
下载锤子日历apk,v1.6
下载地址:http://www.paopaoche.net/android/77944.html查看模拟器是否连接成功
adb devices

如果设备未连接,尝试手动连接
#夜神模拟器连接命令
adb connect 127.0.0.1:62001
# 逍遥模拟器
adb connect 127.0.0.1:21503
3、第一个appium脚本
在模拟器上安装锤子日历并启动。
获取包名和启动的activity
aapt dump badging C:\appium\chuizirili_ppc.apk
package: name='com.smartisan.calendar' versionCode='20161127' versionName='1.7.2'
uses-permission:'android.permission.GET_ACCOUNTS'
uses-permission:'android.permission.MANAGE_ACCOUNTS'
uses-permission:'android.permission.INTERNET'
uses-permission:'android.permission.VIBRATE'
uses-permission:'android.permission.READ_CONTACTS'
uses-permission:'android.permission.READ_CALENDAR'
uses-permission:'android.permission.WRITE_CALENDAR'
uses-permission:'android.permission.WAKE_LOCK'
uses-permission:'android.permission.RECEIVE_BOOT_COMPLETED'
uses-permission:'android.permission.USE_CREDENTIALS'
uses-permission:'android.permission.READ_SYNC_SETTINGS'
uses-permission:'com.google.android.googleapps.permission.GOOGLE_AUTH.mail'
uses-permission:'android.permission.AUTHENTICATE_ACCOUNTS'
uses-permission:'android.permission.ACCESS_COARSE_LOCATION'
uses-permission:'android.permission.ACCESS_FINE_LOCATION'
uses-permission:'android.permission.READ_SYNC_STATS'
uses-permission:'com.smartisan.permission.READ_ACCOUNT'
uses-permission:'android.permission.ACCESS_NETWORK_STATE'
uses-permission:'android.permission.READ_EXTERNAL_STORAGE'
uses-permission:'android.permission.WRITE_EXTERNAL_STORAGE'
uses-permission:'android.permission.READ_PROFILE'
uses-permission:'android.permission.CALL_PHONE'
uses-permission:'android.permission.READ_PHONE_STATE'
uses-permission:'android.permission.ACCESS_WIFI_STATE'
uses-permission:'android.permission.CHANGE_WIFI_STATE'
uses-permission:'android.permission.CHANGE_CONFIGURATION'
uses-permission:'android.permission.GET_TASKS'
uses-permission:'android.permission.MOUNT_UNMOUNT_FILESYSTEMS'
uses-permission:'android.permission.WRITE_CONTACTS'
uses-permission:'android.permission.READ_CALENDAR'
uses-permission:'android.permission.WRITE_SYNC_SETTINGS'
uses-permission:'android.permission.WRITE_SETTINGS'
sdkVersion:'14'
targetSdkVersion:'19'
application: label='Smartisan Calendar' icon='res/mipmap-xhdpi-v4/ic_launcher_calendar.png'
launchable activity name='com.android.calendar.AllInOneActivity'label='' icon=''
uses-feature:'android.hardware.location'
uses-feature:'android.hardware.location.gps'
uses-feature:'android.hardware.location.network'
uses-feature:'android.hardware.wifi'
uses-feature:'android.hardware.telephony'
uses-feature:'android.hardware.touchscreen'
main
other-activities
search
other-receivers
other-services
supports-screens: 'small' 'normal' 'large' 'xlarge'
supports-any-density: 'true'
locales: '--_--' 'ca' 'da' 'fa' 'ja' 'nb' 'be' 'de' 'af' 'bg' 'th' 'fi' 'hi' 'vi' 'sk' 'uk' 'el' 'nl' 'pl' 'sl' 'tl' 'am' 'in' 'ko' 'ro' 'ar' 'fr' 'hr' 'sr' 'tr' 'cs' 'es' 'ms' 'et' 'it' 'lt' 'pt' 'hu' 'ru' 'zu' 'lv' 'sv' 'iw' 'sw' 'fr_CA' 'lo_LA' 'en_GB' 'et_EE' 'ka_GE' 'km_KH' 'zh_HK' 'hy_AM' 'zh_CN' 'en_IN' 'mn_MN' 'es_US' 'pt_PT' 'zh_TW' 'ms_MY'
densities: '120' '160' '240' '320' '480'
从上面可知,package: name='com.smartisan.calendar' ,aunchable activity name='com.android.calendar.AllInOneActivity'
编写脚本
from time import sleep
#从appium中导入webdriver
from appium import webdriver
desired_apability = {}
#平台名称:Android/IOS
desired_apability["platformName"] = "Android"
#系统版本
desired_apability["platformVersion"] ="4.4.2"
#设备名称
desired_apability["deviceName"] = "127.0.0.1:62001"
#是否重置会话
desired_apability["noReset"] = True
#启动的Activity
desired_apability["appActivity"] = "com.android.calendar.AllInOneActivity"
#包名
desired_apability["appPackage"] = "com.smartisan.calendar"
#apk的地址
desired_apability["app"] = r"C:\appium\chuizirili_ppc.apk"
driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub",desired_apability)
#睡眠5s
sleep(5)
print("Install %s and start sucess" %desired_apability["appPackage"])
driver.quit()
运行结果
运行脚本,打开模拟器观察效果,


appium入门篇之desired capabilities(2)的更多相关文章
- Java&Python&Appium 驱动APP及Desired Capabilities配置
一.摘要 本篇博文,将阐述如何将环境&代码&APP联系起来工作 二.Java代码 我们先看一段真实的java代码,我将他放在了TestNG框架的@BeforeTest里,执行这段即可启 ...
- Appium Python 三:Desired capabilities
简介 Desired capabilities 是一些键值对的集合.python里面就采用字典的方式. 客户端将这些键值对发给服务端,告诉服务端我们想要怎么测试.比如,我们可以把 platformNa ...
- Appium基础四:Desired Capabilities详讲
Desired Capabilities在启动session的时候是必须提供的,先看如下代码: Desired Capabilities本质上是key value的对象,他告诉appium serve ...
- Appium 工作原理及 Desired Capabilities
一.Appium工作原理 脚本请求 --> 4723端口appium server --> 解析参数给PC端4724端口 --> 发送给设备4724端口 --> 通过设备472 ...
- Appium自动化(4) - Appium Desired Capabilities 参数详解
如果你还想从头学起Appium,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1693896.html Desired Capabilit ...
- Appium入门(7)__Appium Desired Capabilities
Desired Capabilities 是由多个键值对组成,代表移动设备相关信息.由Appium Client向Appium Server发送. 但无论Appium Client使用何种语言,最终是 ...
- Appium Desired Capabilities
Appium Desired Capabilities Desired Capabilities 是由 keys 和 values 组成的 JSON 对象. 举个简单例子: { "platf ...
- appium简明教程(7)——Desired Capabilities详解
Desired Capabilities在启动session的时候是必须提供的. Desired Capabilities本质上是key value的对象,它告诉appium server这样一些事情 ...
- 移动端自动化测试 -- appium 之Desired Capabilities与 定位控件
一.Desired Capabilities Desired Capabilities 在启动 session 的时候是必须提供的. Desired Capabilities 本质上是以 key va ...
随机推荐
- 机房收费系统vb.net之打包与部署(一)
从机房重构到如今,我最大的感受就是万事开头难,万事结尾难!开头难是由于那个思路理不清,对三层已经设计模式的应用不够熟悉,结尾难就是打包部署了!这几天非常头疼,以为完毕了代码就大功告成了,但是没想到啊, ...
- Chart.js报告
引进需要Chart.js <%@ page language="java" pageEncoding="UTF-8"%> <!DOCTYPE ...
- Matlab随笔之画图函数总结
原文:Matlab随笔之画图函数总结 MATLAB函数画图 MATLAB不但擅长於矩阵相关的数值运算,也适合用在各种科学目视表示(Scientific visualization).本节将介绍MATL ...
- 简化网站开发:SiteMesh小工具
在一个站点的制备,几乎所有的页面将具有相同的部分.导航栏例如,顶,每一页都是一样的,在底部的版权声明,每一页还都是一样的. 因此,在顶部导航栏的准备.第一种方法是直接复制的所有导航栏的代码,这种方法是 ...
- 在Keystone V3基础上改进的分布式认证体系
目标 使用java实现keystone v3相关功能与概念: api client authentication service discovery distributed multi-tenant ...
- WPF实现选项卡效果(2)——动态添加AvalonDock选项卡
原文:WPF实现选项卡效果(2)--动态添加AvalonDock选项卡 简介 在前面一篇文章里面,我们使用AvalonDock实现了类似于VS的选项卡(或者浏览器的选项卡)效果.但是我们是通过xaml ...
- Java之线程池管理
JDK5后建议使用ExecutorService与Excutors来创建与管理线程池, 不再建议直接使用Thread. 开始不明白原因, 今天知道结果了:使用Thread.currnetThread. ...
- sql server DateTime与DateTime2的区别
DateTime字段类型对应的时间格式是 yyyy-MM-dd HH:mm:ss.fff ,3个f,精确到1毫秒(ms),示例 2014-12-03 17:06:15.433 .DateTime2字段 ...
- SqlServer 可更新订阅队列读取器代理错误:试图进行的插入或更新已失败
原文:SqlServer 可更新订阅队列读取器代理错误:试图进行的插入或更新已失败 今天发现队列读取器代理不停地尝试启动但总是出错: 其中内容如下: 队列读取器代理在连接"Publicati ...
- 微信小程序把玩(二十七)audio组件
原文:微信小程序把玩(二十七)audio组件 音频播放已经封装的很好!只需配合属性设置即可! (method和data配合使用) 主要属性: wxml <audio action="{ ...