appium自动化 - android
1. 获取driver
appium通过生成driver来识别和操作app的UI元素。生成driver时,需要给出被测设备的相关信息。appium官方上的例子如下:
public static AndroidDriver<?> mobiledriver;
@BeforeTest
public void beforeTest( ) throws MalformedURLException {
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(MobileCapabilityType.APPIUM_VERSION, "1.7.2");
capabilities.setCapability(MobileCapabilityType.PLATFORM_VERSION, "4.4");
capabilities.setCapability(MobileCapabilityType.PLATFORM_NAME,"Android");
capabilities.setCapability(MobileCapabilityType.AUTOMATION_NAME,"Appium");
capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "Android Emulator");
capabilities.setCapability(MobileCapabilityType.BROWSER_NAME, "Browser");
capabilities.setCapability("newCommandTimeout", 2000);
mobiledriver = new AndroidDriver<>(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
}
Android 第三方被测app举例:
public static AndroidDriver<?> driver1;
public static void main(String[] args) {
//set up Appium
DesiredCapabilities capabilities1 = new DesiredCapabilities();
capabilities1.setCapability(MobileCapabilityType.AUTOMATION_NAME, "uiautomator2");
capabilities1.setCapability(MobileCapabilityType.PLATFORM_NAME, "Android");
capabilities1.setCapability(MobileCapabilityType.PLATFORM_VERSION, "9.0.0");
capabilities1.setCapability(MobileCapabilityType.DEVICE_NAME, "PCT-AL10");
capabilities1.setCapability(MobileCapabilityType.UDID, "xxxx");
capabilities1.setCapability("appPackage", "com.xxxx.xxx.demo");
capabilities1.setCapability("appActivity", ".MainActivity");
//for input Chinese
capabilities1.setCapability("unicodeKeyboard", true);
capabilities1.setCapability("resetKeyboard", true);
try {
driver1 = new AndroidDriver<>(new URL("http://127.0.0.1:4723/wd/hub"), capabilities1);
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
如何获取以上信息呢?
- MobileCapabilityType.APPIUM_VERSION: appium服务器的版本。可通过命令行appium -version 或 安装的appium server客户端查看。
- MobileCapabilityType.PLATFORM_VERSION: 操作系统版本。Android可通过命令行 adb -s xxxx(欲连接的deviceID) shell getprop ro.build.version.release来查看。
- MobileCapabilityType.PLATFORM_NAME: Android 或 iOS。
- MobileCapabilityType.DEVICE_NAME: 被测设备名。Android可通过命令 adb -s xxxx shell getprop ro.product.model 查看。
- appPackage: 被测app包名。Android可通过命令 adb shell pm list packages | grep xxxx来查看。
- appActivity: 被测app activity名。可通过sdk里带的uiautomatorviewer查看。
- MobileCapabilityType.UDID: 被测设备id。Android可通过命令 adb devices获得。
appium自动化 - android的更多相关文章
- Appium自动化Android环境搭建
前言: 本系列教程用于个人经验记录,用于他人借鉴,提供一定参考价值.经常会有一种感觉,工具或技术在某一阶段使用比较熟练,过一段时间就可能会遗忘,俗话说好记性不如烂笔头,以此记录. appium简介 ...
- appium 自动化测试之知乎Android客户端
appium是一个开源框架,相对来说还不算很稳定.转载请注明出处!!!! 前些日子,配置好了appium测试环境,至于环境怎么搭建,参考:http://www.cnblogs.com/tobecraz ...
- Appium自动化环境搭建(windows+Android)
开始安装: 1.首先搭建好Android开发环境(eclipse+jdk+android的sdk包+Level17或以上的版本api) 2.设置ANDROID_HOME系统变量为你的Android S ...
- Windows下部署Appium教程(Android App自动化测试框架搭建)
摘要: 1,appium是开源的移动端自动化测试框架: 2,appium可以测试原生的.混合的.以及移动端的web项目: 3,appium可以测试ios.android.firefox os: 4,a ...
- Appium之Android功能脚本
Android功能脚本 注:这里只写了登录和退出功能,以下不提供app的包名,下面我使用的是线上包 准备:1.Eclipse的Java环境:2.Appium环境:3.Android真机一台. 创建一个 ...
- java+appium 自动化环境搭建
1.安装JDK1.7及以上 2.下载解压sdk并且配置环境变量: ANDROID_HOME:...\adt-bundle-windows-x86_64-20140702\sdk PATH:%ANDRO ...
- appium 获取android 粘贴板上的内容
appium 新版本增加了获取粘贴板的内容.如果使用appium旧版本,获取粘贴板的内容不是那么容易的,甚至百度谷歌各种搜,都无法找到合适的解决方法.新版本获取android 粘贴板内容就显得很容易了 ...
- appium自动化测试之UIautomatorviewer元素定位
appium自动化测试之UIautomatorviewer元素定位 标签(空格分隔): uiautomatorviewer元素定位 前面的章节,已经总结了怎么搭建环境,怎样成功启动一个APP了,这里具 ...
- Appium自动化部署及连接Appium服务
Appium自动化部署: 1)安装appium桌面程序安装:超链接 2)安装客户端 pip install appium-python-client 3)安装服务器 安装 Nodejs 4)连接app ...
随机推荐
- 关于HTTP返回码
301与302区别: 301 重定向 三种主流搜索引擎(Google, Bing, Yahoo)对待301都是一样的.它们忽略原始链接然后把重定向后的新链接加入索引.例如:如果用301把 http:/ ...
- class.forName 和 classLoader的区别
Java中的Class.forName()和ClassLoader都可以用来对类进行加载.Class.forName()除了将类的.class文件加载到JVM中 还会对类进行解释,执行类中的stati ...
- SpringBoot 对IBM MQ进行数据监听接收以及数据发送
一.需求介绍 后端使用Spring Boot2.0框架,要实现IBM MQ的实时数据JMS监听接收处理,并形成回执通过MQ队列发送. 二.引入依赖jar包 <dependency> < ...
- Simple Library Management System HDU - 1497(图书管理系统)
Problem Description After AC all the hardest problems in the world , the ACboy 8006 now has nothing ...
- Equations HDU - 1496(哈希的应用)
Problem Description Consider equations having the following form: a*x1^2+b*x2^2+c*x3^2+d*x4^2=0 a, b ...
- 代理模式与动态代理之JDK实现和CGlib实现
静态代理 静态代理中的代理类和委托类会实现同一接口或是派生自相同的父类. 由业务实现类.业务代理类 两部分组成.业务实现类 负责实现主要的业务方法,业务代理类负责对调用的业务方法作拦截.过滤.预处理, ...
- 核发电站 (dp前缀优化)
大意: $n$个城市, $m$种核电站, 第$i$种假设要建在第$x$个城市, 必须满足$[x-i,x+i]$范围内无其他核电站, 求建核电站的方案数. 简单$dp$题, 设$dp[i][j]$为位置 ...
- Web API 实体对象Get请求参数为null
实体对象前加上 [FromUri] 特性
- JavaScript Basics_Fundamentals Part 1_Variables
JavaScript Variables JavaScript 变量(Variables)是用于存储数据值的容器. 创建一个 JavaScript 变量,可以使用关键字 let. Example le ...
- JS闭包的简单理解。优缺点以及垃圾回收机制
闭包是什么? ·了解闭包首先了解js的‘链式作用域’结构,对象可以一级一级的向上查找父对象的变量,所以父对象的变量对子对象可见,反之不成立:所以都可以访问全局变量 ·为了解决函数外部无法访问函数内局部 ...