本文转自:http://www.cnblogs.com/sundalian/p/5629429.html

Android Capabilities讲解

 

1.Capabilities介绍

可以看下之前代码里面设置的capabilities

DesiredCapabilities capabilities = new DesiredCapabilities();

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位于这个包中:

import org.openqa.Selenium.remote.DesiredCapabilities

所以在使用DesiredCapabilities的时候需要先导入这个类。

2.通用Capabilities

.automationName 

这个capability主要是定义测试引擎。当你在安卓平台上进行测试的时候,你需要确认你使用的android sdk版本,如果是小于17的话,你需要指定测试引擎为:Selendroid。如果大于等于17,你需要使用的引擎是:Appium,默认就是Appium测试引擎。具体使用代码:

DesiredCapabilities caps = new DesiredCapabilities();

caps.setCapability("automationName","Selendroid");

当然你也可以使用Appium的java-client库来设置capabilities,前提是你必须导入这个类:

import io.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

四 Android Capabilities讲解的更多相关文章

  1. 五 Android Capabilities讲解

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

  2. Android Capabilities讲解

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

  3. 2016-2017-2 20155322 实验四 Android 开发基础

    2016-2017-2 20155322 实验四 Android 开发基础 实验内容 下载和安装Android Studio 学会使用Android Studio进行简单的Android开发 实验知识 ...

  4. 20145213 《Java程序设计》实验四 Android开发基础

    20145213 <Java程序设计>实验四 Android开发基础 说在前面的话 不同以往实验,对于这次实验具体内容我是比较茫然的.因为点我,打开实验四的链接居然能飘出一股熟悉的味道,这 ...

  5. 20145308刘昊阳 《Java程序设计》实验四 Android环境搭建 实验报告

    20145308刘昊阳 <Java程序设计>实验四 Android环境搭建 实验报告 实验名称 Android环境搭建 实验内容 搭建Android环境 运行Android 修改代码,能输 ...

  6. 实验四 Android开发基础

    实验四 Android开发基础 实验内容 1.安装Android Studio 2.运行安卓AVD模拟器 3.使用安卓运行出虚拟手机并显示HelloWorld以及自己的学号 (一)SDK的安装 (二) ...

  7. 20145337实验四Android开发基础

    20145337实验四Android开发基础 实验内容 基于Android Studio开发简单的Android应用并部署测试; 了解Android组件.布局管理器的使用: 掌握Android中事件处 ...

  8. 20145225《Java程序设计》 实验四 Android开发基础

    20145225<Java程序设计> 实验四 Android开发基础 实验报告 实验内容 安装Android Studio 运行安卓AVD模拟器 使用安卓运行出虚拟手机并显示HelloWo ...

  9. 20145208 实验四 Android开发基础

    20145208 实验四 Android开发基础 安装Android Studio 安装的具体步骤在老师的链接中已经很详细了,在此就不做赘述了. 在此提出我觉得安装的时候需要注意的两个地方 一是安装地 ...

随机推荐

  1. 【PHP 模板引擎】Prototype 原型版发布!

    在文章的开头,首先要向一直关注我的人说声抱歉!因为原本是打算在前端框架5.0发布之后,就立马完成 PHP 模板引擎的初版.但我没能做到,而且一直拖到了15年元旦才完成,有很严重的拖延症我很惭愧,再次抱 ...

  2. IOS 音频的 使用说明

    说明 ● 简单来说,音频可以分为2种 ● 音效 • 又称“短音频”,通常在程序中的播放时长为1~2秒 • 在应用程序中起到点缀效果,提升整体用户体验 ● 音乐 • 比如游戏中的“背景音乐”,一般播放时 ...

  3. vue中多个元素或多个组件之间的动画效果

    多个元素的过渡 <style> .v-enter,.v-leave-to{ opacity: 0; } .v-enter-acitve,.v-leave-active{ opacity: ...

  4. svn update 时总是提示 Password for '默认密钥' GNOME keyring: 输入密码

    执行svn update 时 总是提示输入密码. $ cd ~/.gnome2/keyrings/ $ ls $ rm 默认密钥.keyring

  5. Media所有参数汇总

    Media所有参数汇总 我们最常需要用到的媒体查询器的三个特性,大于,等于,小于的写法.媒体查询器的全部功能肯定不止这三个功能,下面是我总结的它的一些参数用法解释: width:浏览器可视宽度. he ...

  6. url 解析

    最近在做一个单页应用,使用AngularJS来处理一些页内路由(哈希#后的路由变化).自然会要解析URL中的参数.使用AngularJS自带的方法$location.search();可以自动将参数整 ...

  7. iso十款常用类库

    iso十款常用类库 MBProgressHUD(进展指示符库)   地址:https://github.com/jdg/MBProgressHUD   苹果的应用程序一般都会用一种优雅的,半透明的进度 ...

  8. Django 入门案例开发

    Django是一个重量级的web开发框架,它提供了很多内部已开发好的插件供我们使用:这里不去描述 Django直接进入开发过程. Django入门案例分两部分:一.开发环境的配置:二.业务需求分析. ...

  9. 解决Cannot reinitialise DataTable问题 解决dataTables再次调用不能清空数据

    这里我们只需要多设置一个字段 “destroy" : true 即可 或者设置retrieve: true, 或者在加载datatable之前使用$("#example" ...

  10. linux常见内核参数

    参数 描述 net.ipv4.ip_forward 接口间转发报文net.ipv4.tcp_tw_reuse 表示是否允许将处于 TIME-WAIT 状态的 socket (TIME-WAIT 的端口 ...