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讲解

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

  3. Android Capabilities讲解

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

  4. Web Service进阶(五)SOAPBinding方式讲解

    Web Service进阶(五)SOAPBinding方式讲解 Java API for XML Web Services (JAX-WS) 2.0 (JSR 224) Standard Implem ...

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

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

  6. 20155228 实验五 Android开发基础

    20155228 实验五 Android开发基础 实验内容 1.掌握Socket程序的编写: 2.掌握密码技术的使用: 3.设计安全传输系统. 实验要求 1.没有Linux基础的同学建议先学习< ...

  7. Android核心分析之十五Android输入系统之输入路径详解

       Android用户事件输入路径 1 输入路径的一般原理 按键,鼠标消息从收集到最终将发送到焦点窗口,要经历怎样的路径,是Android GWES设计方案中需要详细考虑的问题.按键,鼠标等用户消息 ...

  8. android wifi讲解 wifi列表显示

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

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

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

  10. Android学习之基础知识五—Android常用的七大控件

    一.TextView控件:在界面上显示一段文本信息 先看XML代码和执行效果:         代码分析: 1.android:id属性,给当前控件定义了一个唯一的标识符 2.android:layo ...

随机推荐

  1. go测试库之apitest

    前言 使用go语言做开发差不多快一年了,主要用来写后端Web服务,从一开始吐槽他的结构体,比如创建个复杂的JSON格式数据,那是相当的痛苦.还有 err 处理写的巨麻烦. 当然,go 也有爽的地方,创 ...

  2. 2022-09-07:给你一个由正整数组成的数组 nums 。 数字序列的 最大公约数 定义为序列中所有整数的共有约数中的最大整数。 例如,序列 [4,6,16] 的最大公约数是 2 。 数组的一个

    2022-09-07:给你一个由正整数组成的数组 nums . 数字序列的 最大公约数 定义为序列中所有整数的共有约数中的最大整数. 例如,序列 [4,6,16] 的最大公约数是 2 . 数组的一个 ...

  3. 2022-06-16:给定一个数组arr,含有n个数字,都是非负数, 给定一个正数k, 返回所有子序列中,累加和最小的前k个子序列累加和。 假设K不大,怎么算最快? 来自亚马逊。

    2022-06-16:给定一个数组arr,含有n个数字,都是非负数, 给定一个正数k, 返回所有子序列中,累加和最小的前k个子序列累加和. 假设K不大,怎么算最快? 来自亚马逊. 答案2022-06- ...

  4. 2021-08-04:给定一个字符串str,当然可以生成很多子序列。返回有多少个子序列是回文子序列,空序列不算回文。比如,str = “aba”,回文子序列:{a}、{a}、 {a,a}、 {b}、{

    2021-08-04:给定一个字符串str,当然可以生成很多子序列.返回有多少个子序列是回文子序列,空序列不算回文.比如,str = "aba",回文子序列:{a}.{a}. {a ...

  5. mysql字段添加中文提示Data too long

    解决方法: 新建一个数据库,字符集选择utf8

  6. HTML转为PDF,图片导出失败的终极解决方案

    如题项目有需求将一个页面导出为pdf,然而页面中的图片却始终无法导出成功 文章目录 一.导出的方法 二.初步测试的结果 三.使用f12查找原油 四.方案一 五.方案二 六.方案三 七.完整代码 1.使 ...

  7. hvv蓝初面试常见漏洞问题(下)

    hvv蓝初面试常见漏洞问题(上) 6.ssrf 服务端伪造请求 原理 服务端提供了向其他服务器应用获取数据的功能,而没有对目标地址做任何过滤和限制.攻击者进而利用其对内部资源进行攻击.(通俗来说:就是 ...

  8. 如何使用Go中的Weighted实现资源管理

    1. 简介 本文将介绍 Go 语言中的 Weighted 并发原语,包括 Weighted 的基本使用方法.实现原理.使用注意事项等内容.能够更好地理解和应用 Weighted 来实现资源的管理,从而 ...

  9. Linux 服务器更换主板后,网卡识别失败的处理方法

    上周日,由于断电,公司所在的集群服务器在关机断电重启后,发现唯一的一个登陆节点主板出现了故障,以致于 log 登陆节点的 Red Hat Enterprise 6 系统无法启动. 由于集群是生信所有分 ...

  10. 10.1. Java性能调优

    Java性能调优是一个复杂且重要的主题,它涉及到了JVM.垃圾收集器.内存管理.多线程.代码优化等多个方面.在本节中,我们将对Java性能调优的基本概念和方法进行简要介绍. 10.1.1. 理解性能指 ...