1.查看Android的应用包名和activity的方法
 
(网上有很多种方法,这里应用的是查看日志的方法)
CMD中输入>adb logcat -c
                  >adb logcat ActivityManager:i *:s
然后操作模拟器中要测试的应用,查看日志,结果如下,cmp=应用包名/Activity
参考文件:http://blog.csdn.net/jlminghui/article/details/40622103     
 
2.定位元素
 
Android SDK的一些工具可以帮助定位,在Android SDK安装目录的tools下
1.monitor.bat:找到Android控件的content-description,方便定位
2.uiautomatorviewer.bat:查看控件的属性,也可查看被测app的appPackage
说明:这两个工具都只支持API level16以上的系统,如果低于这个版本,这两个工具是不能使用的
 
下图是如果有多台机器的情况下怎么选择要获取的机器:
(uiautomator的使用方法:http://blog.csdn.net/chenbang110/article/details/23371731)
 
其他方法:使用appium的inspector来定位元素,具体使用方法链接可以参见我的另一篇随笔http://www.cnblogs.com/meitian/p/4837938.html
 
3.开启appium,launch(右侧的小三角)
 
4.编写测试用例,执行用例脚本,完成一个appium实例
(在执行测试脚本前,一定要保证开启了appium和模拟器)
代码:
from appium import webdriver
import time
#以下为启动session时的desired capabilities的设置
desired_caps = {}
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '18'
desired_caps['deviceName'] = 'emulator-5554'
#desired_caps['app']='D:\software\Android\APPS\com.tencent.mm_621.apk',这个是要安装的app的安装包地址,不是必须的,有#这个项的话会先通过这个地址安装app,我没有用这个,直接用的Package名和activity名
desired_caps['appPackage'] = 'com.android.calculator2'
desired_caps['appActivity'] = '.Calculator'

#以下为启动driver,以及定位元素和操作元素的一些用例操作
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
time.sleep(5)
driver.find_element_by_id("com.android.calculator2:id/digit1").click()
time.sleep(2)
driver.find_element_by_id("com.android.calculator2:id/plus").click()
time.sleep(2)
driver.find_element_by_id("com.android.calculator2:id/digit2").click()
time.sleep(2)
driver.find_element_by_id("com.android.calculator2:id/equal").click()
time.sleep(2)
test = driver.find_element_by_class_name("android.widget.EditText").text
print(test)
assert test == 3
driver.quit()

 
 
desired capabilities的设置时的一些项说明:
 
其他注意点:
1.如果有多台模拟器,appium的Android settings中的launch device里选择的launch VAD会影响到启动的模拟器,我代码里设置的是启动platformVersion为4.3.1的模拟器,但是appium那里设置的是4.0.4,执行时会一直去找4.0.4,没有找到最后就报错了
2.低版本的Android要用selendroid
3.公司需要配置代理才可以联网,这里如果不更改启动的代理是没有办法执行用例成功的,有个简便做法,先开启fiddle,再去执行用例

Android的appium实例的更多相关文章

  1. 开始一个Android的appium实例

      1.查看Android的应用包名和activity的方法   (网上有很多种方法,这里应用的是查看日志的方法) CMD中输入>adb logcat -c                   ...

  2. android widget 开发实例 : 桌面便签程序的实现具体解释和源代码 (上)

    如有错漏请不吝拍砖指正,转载请注明出处,很感谢 桌面便签软件是android上经常使用软件的一种,比方比較早的Sticky Note,就曾很流行, Sticky Note的介绍能够參见 http:// ...

  3. Android进阶(二十三)Android开发过程之实例讲解

    Android开发过程之实例讲解 前言 回过头来审视之前做过的Android项目,发觉自己重新开发时忽然间不知所措了,间隔了太长时间没有开发导致自己的Android技能知识急剧下降.温故而知新. 废话 ...

  4. [转]Android:布局实例之模仿QQ登录界面

    Android:布局实例之模仿QQ登录界面 预览图: 准备: 1.找到模仿对象 QQ登陆界面UI下载>>>>> 2.导入工程 3.查看布局结构和使用控件 其对应效果图分布 ...

  5. Android 应用开发实例之情景模式

    2013-07-01 Android 应用开发实例 1. 情景模式 使用TabHost来实现主界面的布局. 设置一组RadioButton来切换不同的情景模式. 对比普通情景模式,定时情景模式需要加上 ...

  6. Android:布局实例之模仿QQ登录界面

    预览图: 准备: 1.找到模仿对象 QQ登陆界面UI下载>>>>> 2.导入工程 3.查看布局结构和使用控件 其对应效果图分布为 4.分析样式选择器 下拉箭头2种样式:点 ...

  7. Android:布局实例之模仿京东登录界面

    预览图及布局结构参考: 布局: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout ...

  8. 功能强大的图片截取修剪神器:Android SimpleCropView及其实例代码重用简析(转)

    功能强大的图片截取修剪神器:Android SimpleCropView及其实例代码重用简析 SimpleCropView是github上第一个第三方开源的图片修剪截取利器,功能强大,设计良好.我个人 ...

  9. Android native进程间通信实例-binder篇之——HAL层访问JAVA层的服务

    有一天在群里聊天的时候,有人提出一个问题,怎样才能做到HAL层访问JAVA层的接口?刚好我不会,所以做了一点研究. 之前的文章末尾部分说过了service call 可以用来调试系统的binder服务 ...

随机推荐

  1. Ruby on Rails 路由解析

    为了更好的阅读体验.欢迎訪问 作者博客原文 Route是什么 Rails中URL的约定严格基于RESTful风格的.client的请求事实上是在操作一些资源.同一资源的不同的请求动作(GET, POS ...

  2. 使用OpenGL进行Mandelbrot集的可视化

    Mandelbrot集是哪一集?? Mandelbrot集不是哪一集!! 啊不对-- Mandelbrot集是哪一集!! 好像也不对-- Mandelbrot集是数集!! 所以--他不是一集而是数集? ...

  3. insert小细节,大问题

    今天现场报流程无法查看,已查看流程表中没有数据了.昨天有运行过删除垃圾数据的脚步.大致过程是: create table bak_test a as select * from test; creat ...

  4. C++复习:位运算

    与          a&b :    1010&1100=1000  或          a|b  :  1010|1100=1110 异或       a^b :     101 ...

  5. WEB服务器、应用程序服务器、HTTP服务器区别【转】

    WEB服务器.应用程序服务器.HTTP服务器有何区别?IIS.Apache.Tomcat.Weblogic.WebSphere都各属于哪种服务器,这些问题困惑了很久,今天终于梳理清楚了: Web服务器 ...

  6. Grunt是什么,以及它的一些使用方法

    ♥什么是Grunt Grunt和 Grunt 插件是通过 npm 安装并管理的,npm是 Node.js 的包管理器.grunt是基于node 更多插件请访问:http://www.gruntjs.n ...

  7. stacked generalization 堆积正则化 堆积泛化 加权特征线性堆积

    https://en.wikipedia.org/wiki/Ensemble_learning Stacking Stacking (sometimes called stacked generali ...

  8. mysql随机查询

    select * from table as t1 join (select round(rand() * ((select max(id) from table)-(select min(id) f ...

  9. Python爬虫--Urllib库

    Urllib库 Urllib是python内置的HTTP请求库,包括以下模块:urllib.request (请求模块).urllib.error( 异常处理模块).urllib.parse (url ...

  10. RANDOM 的用法

    random 用法 1.利用RANDOM取随机数 shell有一个环境变量RANDOM,范围是0--32767 如果我们想要产生0-25范围内的数:$(($RANDOM%26),在$(()) 是可以省 ...