Android Capabilities讲解
1.Capabilities介绍
可以看下之前代码里面设置的capabilities
DesiredCapabilities capabilities =newDesiredCapabilities();
capabilities.setCapability("automationName", "Appium");
capabilities.setCapability("platformName","Android");
capabilities.setCapability("deviceName","Android Emulator");
capabilities.setCapability("platformVersion", "4.4.2");
capabilities.setCapability("app", app.getAbsolutePath());
capabilities.setCapability("appPackage", "com.example.android.contactmanager");
capabilities.setCapability("appActivity", ".ContactManager");
Desired capability是一个JSON对象,包含一组key和value值。它由客户端发送给服务端,告诉服务端期望的Capabilities(可以理解为一种能力)有哪些,然后服务端根据这些capabilities创建自动化会话(session)。
DesiredCapabilities位于这个包中:
importorg.openqa.Selenium.remote.DesiredCapabilities
所以在使用DesiredCapabilities的时候需要先导入这个类。
2.通用Capabilities
.automationName
这个capability主要是定义测试引擎。当你在安卓平台上进行测试的时候,你需要确认你使用的android sdk版本,如果是小于17的话,你需要指定测试引擎为:Selendroid。如果大于等于17,你需要使用的引擎是:Appium,默认就是Appium测试引擎。具体使用代码:
DesiredCapabilities caps =newDesiredCapabilities();
caps.setCapability("automationName","Selendroid");
当然你也可以使用Appium的java-client库来设置capabilities,前提是你必须导入这个类:
importio.appium.java_client.remote.MobileCapabilityType
然后设置代码如下:
caps.setCapability(MobileCapabilityType.AUTOMATION_NAME,"Selendroid");
iOS无需进行这个设置,默认就是Appium引擎。
·platformName
定义测试平台的名字,通常用于移动设备。值有:Android、iOS和FirefoxOS。使用代码如下:
caps.setCapability("platformName","Android");
还可以使用java-client提供的方式设置:
caps.setCapability(MobileCapabilityType.PLATFORM_NAME, "Android");
在使用的过程中,请按照实际平台来填写即可。
·platformVersion
测试平台版本,移动设备固件的版本号,比如:iOS的7.1.1,9.3等,Android的4.4.2、5.1.1等。设置代码:
caps.setCapability("platformVersion","4.4.4");
Java-client提供的设置方式:
caps.setCapability(MobileCapabilityType.PLATFORM_VERSION, "4.4.4");
还是请按照实际版本号来填写。
·deviceName
移动设备的名字,比如iPhone 5s、Google Nexus等,设置代码:
caps.setCapability("deviceName", "Nexus 5");
或者用java-client设置方式:
caps.setCapability(MobileCapabilityType.DEVICE_NAME,"Nexus 5");
·app
苹果app或者安卓app的路径,可以是本地的绝对路径,也可以是远程网络路径,只要有访问权限即可。根据这个app capabilities,Appium会在启动测试之前安装好app到设备。在测试安卓的时候,appPackage 和appActivity也需要设置,和app搭配使用。appPackage 和appActivity是安卓独有的capabilities,在5.3小节会讲解这两个capabilities。
设置方式:
caps.setCapability("app","/apps/demo/demo.apk 或者 http://app.com/app.ipa");
Java-client设置方式:
caps.setCapability(MobileCapabilityType.APP,"/apps/demo/demo.apk 或者http://app.com/app.ipa")
·browserName
如果你想测试web app,那么你就需要定义browserName。对于Android来说,你可能会一定chrome浏览器,设置代码:
caps.setCapability("browserName", "Chrome");
或者使用java-client的设置方式:
caps.setCapability(MobileCapabilityType.BROWSER_NAME, "Chrome");
对于iOS来说你可能要定义Safari浏览器
·newCommandTimeout
为了结束appium会话(session),appium会设置一个等待从客户端发送命令超时的时间。默认时间是60秒,如果你不进行设置,如果你需要设置,代码如下:
caps.setCapability("newCommandTimeout", "30");
当然你可以使用java-client提供的方法设置:
caps.setCapability(MobileCapabilityType.NEW_COMMAND_TIMEOUT,"30");
一般来说这个不用设置,保持默认即可。
·autoLaunch
设置设个capability,会自动安装app并且启动app。设置代码为:
caps.setCapability("autoLaunch","false");
·autoWebview
如果你测试的是混合应用并且想直接进入webview内容中,那么你需要设置设置这个capability的值为true,代码如下:
caps.setCapability("autoWebview", "true");
更多的capabilities可以参考这里:
https://github.com/appium/appium/blob/master/docs/en/writing-running-appium/caps.md
3.Android独有Capabilities
·appPackage
设置安卓app的包名的capability,告诉appium你要运行哪个app。
设置代码为:
caps.setCapability("appPackage", "com.android.calculator2");
当然你还可以使用java-client提供的方法设置:
caps.setCapability(MobileCapabilityType.APP_PACKAGE, "com.android.calculator2”);
·appActivity
设置你想要运行的app的activity(相当于一个界面或者理解成网页),比如:LoginActivity,登录的activity,可以理解为登录界面。
设置代码为:
caps.setCapability("appActivity", "com.xxx.xxx.LoginActivity ");
或者使用java-client提供的方法设置:
caps.setCapability(MobileCapabilityType.APP_ACTIVITY, "com.xxx.xxx.LoginActivity ");
·appWaitActivity
设置你想要等待的android activity,设置方式为:
caps.setCapability("appWaitActivity","com.android.calculator2.Calculator");
或者
caps.setCapability(MobileCapabilityType.APP_WAIT_ACTIVITY,"com.android.calculator2.Calculator”);
·appWaitPackage
需要等待的app的包,设置方法:
caps.setCapability("appWaitPackage","com.example.android.myApp");
·unicodeKeyboard
是否使用unicode键盘输入,如果设置为true,那么可以输入中文和特殊字符,这个很常用,一般设置为true。设置代码为:
caps.setCapability("unicodeKeyboard","true");
·resetKeyboard
是否重置键盘为原始状态,比如你将键盘设置为了unicode键盘,当用例执行完成之后,将resetKeyboard设置为true,则键盘重置为原始状态。设置代码为:
caps.setCapability("resetKeyboard","true");
以上只选了几个代表性的capability,更多的capability请参考:
https://github.com/appium/appium/blob/master/docs/en/writing-running-appium/caps.md
**Server capabilities**
Capability Appium 、Selendroid
platformName 平台的名称:iOS, Android, or FirefoxOS
platformVersion 移动设备的系统版本号,7.1, 4.4
deviceName IOS:instruments -s devices,Android:随便写
app 安装文件路径:/abs/path/to/my.apk or http://myapp.com/app.ipa
browserName 测试的web浏览器,如果是测app则忽略
newCommandTimeout 等待新命令的最长时间,超时后退出。默认是60s
autoLaunch 是否自动安装和启动,默认true
language 模拟器的语言设置
locale 模拟器的地区设置
udid 设备号
orientation 模拟器的横竖屏设置
autoWebview Move directly into Webview context
noReset 在当前session前不重置app状态
fullReset ios删除文件夹,Android删除app数据。 **android only**
appActivity 要启动的Activity
appPackage 要启动的包
appWaitActivity 等待的Activity
appWaitPackage 等待的包
deviceReadyTimeout等待设备就绪的时间
转发:https://www.jianshu.com/p/33b05eccb182
Android Capabilities讲解的更多相关文章
- 四 Android Capabilities讲解
本文转自:http://www.cnblogs.com/sundalian/p/5629429.html Android Capabilities讲解 1.Capabilities介绍 可以看下之 ...
- 五 Android Capabilities讲解
1.Capabilities介绍 可以看下之前代码里面设置的capabilities DesiredCapabilities capabilities = new DesiredCapabilitie ...
- Android开发工程师文集-Android知识点讲解
前言 大家好,给大家带来Android开发工程师文集-Android知识点讲解的概述,希望你们喜欢 WebView讲解 一般通过Intent调用系统的浏览器: Uri uri = Uri.parse( ...
- android wifi讲解 wifi列表显示
1.怎样获取wifi对象并进行操作 要操作WIFI设备,需要先获取Context.getSystemService(Context.WIFI_SERVICE)来获取WifiManager对象,并通过这 ...
- Appium python自动化测试系列之Android知识讲解(三)
3.1 ADB工具讲解 3.1.1 什么是ADB呢? 我们不去解释官方语言的翻译,给大家说一个通熟易懂的说法,ADB我理解为他就是电脑和手机连接的桥梁.此连接不是充电的连接,大家不要混淆,说他是一个 ...
- android layout_weight讲解
Layout_weight是线性布局,也就是LinearLayout里面用到的,下面通过实验来看这个Layout_weight的特性. 1.当控件的属性android:layout_width=&qu ...
- android onConfigurationChanged讲解
本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处! 相信大家对这个属性已经耳熟能详,如果大家受过转屏的折磨的话! 老规矩,先讲讲官方文档是怎么说的.为什 ...
- Android Context讲解(转)
博客出处 前言:本文是我读<Android内核剖析>第7章 后形成的读书笔记 ,在此向欲了解Android框架的书籍推荐此书. 大家好, 今天给大家介绍下我们在应用开发中最熟悉而陌生的朋友 ...
- android AlarmManager讲解
Android系统闹钟定时功能框架,总体来说就是用数据库存储定时数据,有一个状态管理器来统一管理这些定时状态的触发和更新.在Andriod系统中实现定时功能,最终还是要用到系统提供的AlarmMana ...
随机推荐
- Dubbo源码分析:设计总结
设计原则 1. 多用组合,少用继承 2. 针对接口编程,不针对实现编程 3. 依赖抽象,不要依赖具体实现类. 设计模式 1. 策略设计模式:Dubbo扩展Spring的xml标签解析 ...
- angular和datatables一起使用的时候,出现TypeError: Cannot Read Property "childNodes" Of Undefined In AngularJS
在anguglar中注入'$timeout' 然后: $timeout(function{},0,false);
- solidworks 学习 (四)
旋钮三维建模
- asp.net web开发——文件夹的上传和下载
ASP.NET上传文件用FileUpLoad就可以,但是对文件夹的操作却不能用FileUpLoad来实现. 下面这个示例便是使用ASP.NET来实现上传文件夹并对文件夹进行压缩以及解压. ASP.NE ...
- WinDbg常用命令系列---单步执行p*
p (Step) p命令执行单个指令或源代码行,并可选地显示所有寄存器和标志的结果值.当子例程调用或中断发生时,它们被视为单个步骤. 用户模式: [~Thread] p[r] [= StartAddr ...
- [RN] React Native 下列表 FlatList 和 SectionList
1.FlatList FlatList组件用于显示一个垂直的滚动列表,其中的元素之间结构近似而仅数据不同. FlatList更适于长列表数据,且元素个数可以增删.和ScrollView不同的是,Fla ...
- mysql 获取数学成绩最高以及最低的同学
mysql> select * from test; +----+----------+-------+-----------+ | id | name | score | subject | ...
- PHP base_convert() 函数
16进制转8进制 <?php $hex = "E196"; echo base_convert($hex,,); ?> 8进制数转换为10进制数 <?php $o ...
- nRF51822 Beacon 扫描请求包的设置
Nordic 公司自己做有 iBeacon的板子和 SDK,很少有人拥有这个SDK,我最近在朋友那也拿到了一个,但是还没有时间看. 现在我们用普通的SDK自带的 Beacon 例程来做开发,开发的时相 ...
- 在Windows环境下搭建Snort+BASE入侵检测系统
操作系统: Windows 7 (service pack 1) 所需软件: 虚拟机:VirtualBox 网络数据包截取驱动程序:WinPcap 4.1.3 (WinPcap_4_1_3.exe) ...