appium 搭建及实例
一、Appium环境搭建(Java版本)
转载2016-04-26 09:24:55
市场需求与职业生涯的碰撞,阴差阳错我就跨进了移动App端自动化测试的大门,前生乃iOS程序猿一枚,好了,入正题~
Appium环境的搭建,本文主要讲解一下Java环境配置、Android环境配置、Appium相关组件的安装。
Java环境配置
1、JDK安装 :首先度娘下载JDK,传送门http://www.oracle.com/technetwork/java/javase/downloads/index-jsp-138363.html
第一步,点击下载
第二步,接受用户协议,不点接受不能下载; 第三步,根据自己系统下载对应的JDK,我的是Windows 64位,Windows 32位下载Windows X86那个
下载下来后点击安装,一直下一步默认安装就行。。。。。。
全部默认设置就行(PS:第二张图的JDK安装地址在下面会用到)
2、Java_Home与Path环境变量的配置
按照以上步骤就能找到Windows7添加环境变量的入口了
在新建里输入变量名:“JAVA_HOME”和变量值,变量值就是上面安装JDK的地址,我的是“C:\Program Files (x86)\Java\jdk1.7.0_45”,然后点击确定。
以上为我添加JAVA_HOME的截图
然后,添加Path环境变量,因为我的系统变量里已经存在Path变量,所以不用新建了,直接找到Path点击编辑,直接把“%JAVA_HOME%\bin;”添加到变量值栏里就行了,注意分号隔开!
点击确定,完成Path环境变量添加
3、Java环境验证
点击Windows键,输入cmd,点击第一个进入终端
输入:”set“,回车查看JAVA_HOME配置成功,如上图看到所示信息即可
输入:”java -version“回车查看java版本信息,说明配置成功
好了,Java环境配置就算基本完成了~
Android环境配置
1、adt-bundle-windows的下载
根据对应系统下载对应的adt,直接度娘adt-bundle-windows就能找到。给个64位windows7传送门http://125.39.35.131/files/3074000007BDAD4A/dl.google.com/android/adt/adt-bundle-windows-x86_64-20140702.zip
adt解压后大概就是这样
2、Android_Home的配置和Path的添加
步骤与Java_Home的配置一样,新建->变量名:“Android_Home”,变量值:你的adt解压后,文件夹里sdk的地址,我的是“C:\adt-bundle-windows-x86-20140702\sdk”。然后在Path变量值里添加两个路径,步骤与上相同,分别是“%Android_Home%\tools”、“%Android_Home%\platform-tools”,注意添加到Path变量值里时用分号隔开。
3、Android环境验证
重新打开cmd,输入set查看是否有上面添加的路径。然后输入"adb devices"回车,输入“emulator”查看上面两个环境配置是否成功。
如果未出现“xxx不是内部或外部命令,也不是可运行xxxx”,如上所示则成功了
现在Android环境搭建基本完成。
Appium相关组件安装
1、安装Node.js
度娘下载Node.js,双击一直默认安装就行,传送门https://nodejs.org/dist/v4.4.3/node-v4.4.3-x64.msi,安装时把安装地址记录下来,到下面需要配置环境变量。
2、添加Path
把Node.js的安装路径添加到环境变量Path的变量值里,注意分号隔开,我的是“C:\Program Files\nodejs\”。
3、安装.Net Framework4.5
如果电脑已经安装.Net Framework4.5或者高于4.5则不用再安装,基本大家都有安装,可以直接略过,如果没有安装,直接度娘下载安装一下就能解决。传送门:http://www.microsoft.com/zh-cn/download/details.aspx?id=30653。
4、安装Appium
下载安装Appium,默认安装即可,传送门:https://bitbucket.org/appium/appium.app/downloads/。个人推荐通过传送门的图像化界面下载安装,方便简单。(PS:也可在命令行输入“npm install -g appium”,回车下载安装,输入“appium-doctor”验证通过命令行是否安装成功)
启动Appium,双击Appium图标就可以打开了,里面有启动服务按钮。
Appium打开后的界面
二、Appium测试demo(Java版)
转载2016-05-31 09:15:51
上一节已经告诉大家Appium的环境搭建了,不知道大家都搭建的怎么样了,我且说一下我身边的小伙伴们遇到的问题吧。
1、有因为环境变量填写有误导致不成功,这个,就自己检查尽量避免吧。
2、有通过其他途径拷贝的Appium,安装完后部分系统文件缺失导致启动服务失败。
这个的解决办法就是,卸载坏掉的Appium,从我给的地址去下载对应版本的Appium,然后重新安装。可能会遇到被墙的问题,再推荐一个靠谱的VPN,度娘Lantern,懒得找的直接传送门 http://www.mfbuluo.com/lantern,或者去我的网盘直接download一份Windows版的 http://pan.baidu.com/s/1i4Wshal 。
言归正传,现在来说如何运行一个测试demo。首先,准备好一款模拟器、待测试的.apk包、测试会用到的相关jar包。
下载夜神模拟器
为了方便截屏和没有安卓设备的用户,先下载一个安卓模拟器,我这里下载的是夜神模拟器,度娘就能下到,楼楼家直通车 http://pan.baidu.com/s/1skLmEHB,当然,如果已经有真机或者更好的模拟器就不用下了。安装好了之后有一个多开器和一个模拟器,点击打开模拟器,如下图。修改设备名称,这个凭自己喜好,我取名是“VCan”,然后留意一下模拟器版本信息。
更改模拟器名称
查看模拟器安卓版本信息(我的模拟器安卓系统是4.4.2版)
下载安装待测试软件
百度下载一个待测试的安卓安装包,比如度娘“新浪微博.apk”,懒癌晚期患者直接从我云盘下载 http://pan.baidu.com/s/1pLmvgb5 ,然后直接把新浪安卓安装包拖到模拟器里,模拟器就会自己安装新浪微博,其他.apk安装方法同理。在模拟器里手动点击打开微博,确定安装的没有问题,能正常打开。接下来,获取安装包里启动类名称。打开终端cmd,先cd进入到刚才下载的“新浪.apk”目录下,然后使用aapt dump badging xxx.apk命令获取包内信息。注意,启动类名称一个字母都不能错。
cd进入到你安装包的目录下
找到红框字段,记下启动类名称,我这里是“com.sina.weibo.SplashActivity”
备注:如果提示aapt不是内部命令你在sdk \build-tools下的某个android版本中可以找到aapt.exe 文件,如: D:\software\test_tools\adt-bundle-windows-x86-20131030\sdk\build-tools\android-4.4
然后把该路径添加到你的path 变量中,确定后重启cmd, 输入aapt就可以正常使用了。
下载相关jar包
在一会儿的测试里会依赖相关测试jar包,我已经度娘过了,大家先从楼楼家直接download下来吧,传送门 http://pan.baidu.com/s/1eRZgrPC 。至此,准备工作基本完毕,我们可以开工了!
正式测试Demo
打开在上篇博客搭建环境时下载的adt文件夹,具体地址 adt-bundle-windows-x86-20140702\eclipse(PS:版本不同,地址里数字有出入),然后双击打开eclipse.exe 。
打开eclipse
左上角File->New->Java Project新建Java项目,项目名随便,我取的是“VTest”
新建Java项目
选中新建的项目,右键,新建文件夹apps(PS:用来放安装包apk文件),同理再新建一个lib文件夹(PS:用来放之前下的三个jar包)
新建文件夹
然后复制、粘贴,分别把“微博.apk”、三个jar包拷贝到apps文件夹和libs文件夹下。接着把jar包添加到构建路径,方法是选中jar包,右键->Build Path->Add to Build Path,添加前与添加后的项目结构图如下。
jar包添加到构建路径
选中scr文件夹,右键New->Package新建包,名称自己随意取,我取的是“VTest”
新建包VTest
选中包,右键New->Class新建类,名称随意,我取的是VV,记得勾选添加main函数,途中已经标记,以后新建类时把添加mian函数的勾去掉即可。
新建类VV
双击打开VV类,将如下代码拷贝至main函数里,完整代码:
String deviceName = "VCan";
String platformVersion = "4.4.2";
String apkName = "微博.apk";
String appActivity = "com.sina.weibo.SplashActivity";
String AppiumServerIP = "http://127.0.0.1:4723/wd/hub";
AndroidDriver driver;
File apk = new File(System.getProperty("user.dir")+File.separator+"apps"+File.separator+apkName);
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("deviceName", deviceName);
capabilities.setCapability("platformVersion", platformVersion);
capabilities.setCapability("app", apk);
capabilities.setCapability("appActivity", appActivity);
capabilities.setCapability("noSign", true);
capabilities.setCapability("noReset", true);
driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"),capabilities);
注意30行处会有一个小错误,按照图示方法,或者在第九行回车加上@throws MalformedURLException
此时,打开捕捉模拟器屏幕工具,具体路径adt-bundle-windows-x86-20140702\sdk\tools,双击uiautomatorviewer.bat文件会弹出一个终端黑窗口,一直都不要关闭,然后双击zipalign.exe,然后会弹出模拟器截屏工具。
截屏工具打开后的样子
打开模拟器,运行微博app,等进入到微博首页后,点击截屏工具的截屏按钮进行截屏(PS:截屏工具菜单栏第二个按钮,下图有标注)。
注意,是先左图模拟器运行出新浪新闻的画面,在右图点击截屏
我们这次先做个简单的,跑起来就行,所以就做一下点击发布按钮,然后点击关闭收起发布界面这个简单的操作。先在截屏工具里点击发布按钮,图中箭头1所示,然后把图中箭头2圈起来的resource-id复制出来(PS:以后测试里,很多时候都会用到resource-id来标记一个控件)。
获取发布按钮source-id
接下来,在模拟器上点击一下发布按钮,此时模拟器会弹出一个发布文字、图片等的一个候选框,再次点击截屏按钮,获取此时的模拟器屏幕,与上同。
获取关闭发布按钮source-id
通过代码锁定控件,并执行点击操作。把如下代码添加到刚才代码片段后面,红框内代码如下:
Thread.sleep(3000);
System.out.println("App启动等待时间");
Thread.sleep(4000);
driver.findElementById("com.sina.weibo:id/plus_icon").click();
driver.findElementById("com.sina.weibo:id/pop_control_bar_front_close_img").click();
Thread.sleep(2000);
driver.close();
driver.quit();
编码实现需要自动化测试的步骤
打开Appium,点击箭头1所示按钮,确定服务器地址与端口。点击箭头2所示按钮,启动Appium服务器。
确定端口信息与启动Appium
等待十秒左右,出现如图输出信息则说明启动服务成功。
启动Appium成功
点击模拟器右下角查看后台进程按钮,左滑杀掉微博进程,以后每次编译运行时最好都提前杀掉后台待测app进程,不然有时会链接服务器异常,编译不能通过等问题。
杀掉微博后台进程
打开eclipse,选中VV类,右键Run As->Java Application,弹窗点击OK就行,等待一会儿之后,模拟器里的新浪app会自动运行,然后自动点击发布按钮与关闭按钮。
编译运行测试代码
保存更改
现在就等着自动编译运行就好了,好了,我们的小demo也就算成功了,整个过程实在太长,这里就不继续讲了。这里有个运行起来的效果视频,共享在楼楼家,大家可以下载下来看下,直通车 http://pan.baidu.com/s/1qXC1rfI 。然后,刚才写的这点源代码一并放上去,直通车地址 http://pan.baidu.com/s/1gfJf4oN。
根据电脑配置不同、模拟器或者真机的区别,运行起来的等待时间会有一定差别
小结
整个流程基本完毕,这次的demo测试并没有太多测试代码,主要是让大家能把demo跑起来。所以,先掌握测试流程。
然后说一下在整个流程中可能遇到的问题:
1、用截屏工具截屏失败。
此时,把模拟器里该app后台进程杀掉,重新手动进入。截屏前,都请手动进入,然后点击截屏操作。
2、Appium启动失败,提示端口已经被占用。
打开任务管理器,查看进程。结束“node”进程,如果没有,就结束“adb.exe”进程,然后再次点击启动服务器即可成功。
3、第一次编译运行能成功,第二次运行就一次报错不能编译运行。
把模拟器里该app后台进程杀掉,然后eclipse重新点击编译运行。如果还不行,查看代码是否有语法错误。
4、获取source-id后不能点击,或者运行到点击时直接crash。
source-id获取有误,或者在该页面有多个控件都是此source-id,此时需要用其他控件定位方式来定位控件。
常用定位控件方法:
driver.findElementById(“id”);
driver.findElementByName(“name”);
driver.findElementByClassName(“ClassName”);
driver.findElements(By.id(“id”)).get(index);
博文篇幅较长,请耐心实践。如有不足,恳请指正,谢谢。楼楼最近正在写一个微信抢红包,等完成再与大家一同分享哈~
appium 搭建及实例的更多相关文章
- Python appium搭建app自动化测试环境
appium做app自动化测试,环境搭建是比较麻烦的. 也是很多初学者在学习app自动化之时,花很多时间都难跨越的坎. 但没有成功的环境,就没有办法继续后续的使用. 在app自动化测试当中,我们主要是 ...
- 基于Docker的TensorFlow机器学习框架搭建和实例源码解读
概述:基于Docker的TensorFlow机器学习框架搭建和实例源码解读,TensorFlow作为最火热的机器学习框架之一,Docker是的容器,可以很好的结合起来,为机器学习或者科研人员提供便捷的 ...
- springmvc环境搭建及实例
一. 软件环境 eclipse-jee-mars-R-win32-x86_64 jdk1.7.0_79 apache-tomcat-7.0.52 spring-framework-3.2.0.RELE ...
- SpringMVC笔记——SSM框架搭建简单实例
落叶枫桥 博客园 首页 新随笔 联系 订阅 管理 SpringMVC笔记——SSM框架搭建简单实例 简介 Spring+SpringMVC+MyBatis框架(SSM)是比较热门的中小型企业级项目开发 ...
- Appium使用Python运行appium测试的实例
Appium使用Python运行appium测试的实例 一. Appium之介绍 https://testerhome.com/topics/8038 详情参考--https://testerhom ...
- 一个完整的Appium手机自动化测试实例
实现过程: 1.使用环境 appium .安卓SDK .python 本文重点是自动化实例,环境搭建过程省略. 2.找到被测APP的包名和Activity Name 手机连接上电脑后,在DOS环境先使 ...
- Appium移动自动化测试实例-基于python
一.环境搭建 安装Android 环境变量.SDK.Android API.ADT等. 步骤1 安装SDK:下载地址为https://pan.baidu.com/s/1mi6PT9m.如提示错误:' ...
- monkeyrunner之环境搭建及实例(三)
Monkeyrunner工具提供了一个API,使用此API写出的程序可以在Android代码之外控制Android设备和模拟器. 一.Monkeyrunner简介 1.MOnkeyrunner相对Mo ...
- CENTOS6.6上搭建单实例ORACLE12C
本文来自我的github pages博客http://galengao.github.io/ 即www.gaohuirong.cn 摘要: 自己在centos6.6上搭建的单实例oracle12c 由 ...
随机推荐
- How to Export to Excel
https://simpleisbetterthancomplex.com/tutorial/2016/07/29/how-to-export-to-excel.html Export data to ...
- redis sentinel哨兵的使用
哨兵模式是Redis集群管理的一种方式. 下面以Go语言为例介绍其使用方式. 使用举例 package main import ( "fmt" "strings" ...
- 超级账本Hyperledge的kafka共识算法里的Topic 与 Partition
Topic在逻辑上可以被认为是一个queue队列,每条消息都必须指定它的topic,可以简单理解为必须指明把这条消息放进哪个queue里.为 了使得Kafka的吞吐率可以水平扩展,物理上把topic分 ...
- Composer的学习
来自http://blog.sina.com.cn/s/blog_6262a50e0101b5ut.html 简介 composer是PHP中的一个依赖关系管理工具.只要(按指定格式)声明项目所依赖的 ...
- 分析Ajax请求并抓取今日头条街拍美图
项目说明 本项目以今日头条为例,通过分析Ajax请求来抓取网页数据. 有些网页请求得到的HTML代码里面并没有我们在浏览器中看到的内容.这是因为这些信息是通过Ajax加载并且通过JavaScript渲 ...
- azure 1元试用,如何创建虚拟机等
付了1元后,直接进 https://manage.windowsazure.cn 创建虚拟机即可.
- STL序列式容器学习总结
STL序列式容器学习总结 参考资料:<STL源码剖析> 参考网址: Vector: http://www.cnblogs.com/zhonghuasong/p/5975979.html L ...
- angular的组件通信
参见这里 总结如下: @Input和@Ouptut 获取父实例,获取子实例 通过service共享数据 发送事件EventEmitter(个人喜欢angular-event-service) rx ...
- [原抄] Potplayer 1.7.2710 快捷键
对着软件一个一个抄下来的. 打开文件:Ctrl+O[F3] / 简索文件:F12 / 最后文件 Ctrl+Y / 关闭:F4 打开摄像头:Ctrl+J / 打开DVD设备 Ctrl+D 播放.暂停:空 ...
- 黄聪:PHP调试显示所有错误信息
ini_set('display_errors',1); //错误信息 ini_set('display_startup_errors',1); //php启动错误信息 error_reporting ...