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讲解的更多相关文章

  1. 四 Android Capabilities讲解

    本文转自:http://www.cnblogs.com/sundalian/p/5629429.html Android Capabilities讲解   1.Capabilities介绍 可以看下之 ...

  2. 五 Android Capabilities讲解

    1.Capabilities介绍 可以看下之前代码里面设置的capabilities DesiredCapabilities capabilities = new DesiredCapabilitie ...

  3. Android开发工程师文集-Android知识点讲解

    前言 大家好,给大家带来Android开发工程师文集-Android知识点讲解的概述,希望你们喜欢 WebView讲解 一般通过Intent调用系统的浏览器: Uri uri = Uri.parse( ...

  4. android wifi讲解 wifi列表显示

    1.怎样获取wifi对象并进行操作 要操作WIFI设备,需要先获取Context.getSystemService(Context.WIFI_SERVICE)来获取WifiManager对象,并通过这 ...

  5. Appium python自动化测试系列之Android知识讲解(三)

    ​3.1 ADB工具讲解 3.1.1 什么是ADB呢? 我们不去解释官方语言的翻译,给大家说一个通熟易懂的说法,ADB我理解为他就是电脑和手机连接的桥梁.此连接不是充电的连接,大家不要混淆,说他是一个 ...

  6. android layout_weight讲解

    Layout_weight是线性布局,也就是LinearLayout里面用到的,下面通过实验来看这个Layout_weight的特性. 1.当控件的属性android:layout_width=&qu ...

  7. android onConfigurationChanged讲解

    本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处! 相信大家对这个属性已经耳熟能详,如果大家受过转屏的折磨的话! 老规矩,先讲讲官方文档是怎么说的.为什 ...

  8. Android Context讲解(转)

    博客出处 前言:本文是我读<Android内核剖析>第7章 后形成的读书笔记 ,在此向欲了解Android框架的书籍推荐此书. 大家好, 今天给大家介绍下我们在应用开发中最熟悉而陌生的朋友 ...

  9. android AlarmManager讲解

    Android系统闹钟定时功能框架,总体来说就是用数据库存储定时数据,有一个状态管理器来统一管理这些定时状态的触发和更新.在Andriod系统中实现定时功能,最终还是要用到系统提供的AlarmMana ...

随机推荐

  1. The Open Source Business Model is Under Siege

    https://www.influxdata.com/blog/the-open-source-database-business-model-is-under-siege/ A few weeks ...

  2. 讨论SQL语句中主副表之间的关系

    在公司这么多些时间,自己在写SQL语句这方面的功夫实在是太差劲了,有时候自己写出来的SQL语句自己都不知道能不能使用,只是自己写出来的SQL语句是不报错的,但是,这对于真正意义上的SQL语句还差的真的 ...

  3. SpringMVC_原理(转)

    在整个Spring MVC框架中,DispatcherServlet处于核心位置,它负责协调和组织不同组件完成请求处理并返回响应的工作.具体流程为:1)客户端发送http请求,web应用服务器接收到这 ...

  4. LeetCode 1140. Stone Game II

    原题链接在这里:https://leetcode.com/problems/stone-game-ii/ 题目: Alex and Lee continue their games with pile ...

  5. Ubuntu下设置 nginx php-fpm 自动启动 rc.local

    编辑 root@ubuntu:/usr/sbin# vim /etc/init.d/rc.local /usr/sbin/php-fpm /usr/sbin/nginx 保存!

  6. Codevs 2800 送外卖(状压DP)

    2800 送外卖 时间限制: 2 s 空间限制: 256000 KB 题目等级 : 钻石 Diamond 题目描述 Description 有一个送外卖的,他手上有n份订单,他要把n份东西,分别送达n ...

  7. Linux 把进程为D(不可中断进程)转换成其他状态

    问题现象:当前集群跑hadoop的时候,,任务失败,但是跑任务的容器没有正常退出,显示一大堆的YarcChild进程,,more /proc/进程/status   查看其状态,进程为D(disk s ...

  8. JavaScript中的内存溢出与内存泄漏

    内存溢出 是一种程序运行出现的错误: 当程序运行需要的内存超过了剩余的内存时, 就出抛出内存溢出的错误 var obj = {} for (var i = 0; i < 100000; i++) ...

  9. OpenFOAM——圆腔顶盖旋转驱流

    本算例来自<ANSYS Fluid Dynamics Verification Manual>中的VMFL008: Flow Inside a Rotating Cavity 腔体顶盖以1 ...

  10. magento2重写virtualType并且传参

    今天遇到一个需求需要重写一个block,但是这个block是应用virtualType实现,所以需要先重写virtualType,然后却因为参数丢失而获取不到正确的结果.因此,查阅文档,需要用type ...