一、Appium环境搭建(Java版本)

转载2016-04-26 09:24:55

标签:appium移动端自动化测试

市场需求与职业生涯的碰撞,阴差阳错我就跨进了移动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移动端自动化测试

上一节已经告诉大家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);

博文篇幅较长,请耐心实践。如有不足,恳请指正,谢谢。​楼楼最近正在写一个微信抢红包,等完成再与大家一同分享哈~