上一节已经告诉大家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”,然后留意一下模拟器版本信息。
下载安装待测试软件
百度下载一个待测试的安卓安装包,比如度娘“新浪微博.apk”,懒癌晚期患者直接从我云盘下载 http://pan.baidu.com/s/1pLmvgb5 ,然后直接把新浪安卓安装包拖到模拟器里,模拟器就会自己安装新浪微博,其他.apk安装方法同理。在模拟器里手动点击打开微博,确定安装的没有问题,能正常打开。接下来,获取安装包里启动类名称。打开终端cmd,先cd进入到刚才下载的“新浪.apk”目录下,然后使用aapt dump badging xxx.apk命令获取包内信息。注意,启动类名称一个字母都不能错。
下载相关jar包
****在一会儿的测试里会依赖相关测试jar包,我已经度娘过了,大家先从楼楼家直接download下来吧,传送门 http://pan.baidu.com/s/1eRZgrPC 。至此,准备工作基本完毕,我们可以开工了!
正式测试Demo
打开在上篇博客搭建环境时下载的adt文件夹,具体地址 adt-bundle-windows-x86-20140702\eclipse(PS:版本不同,地址里数字有出入),然后双击打开eclipse.exe 。
左上角File->New->Java Project新建Java项目,项目名随便,我取的是“VTest”
选中新建的项目,右键,新建文件夹apps(PS:用来放安装包apk文件),同理再新建一个lib文件夹(PS:用来放之前下的三个jar包)
然后复制、粘贴,分别把“微博.apk”、三个jar包拷贝到apps文件夹和libs文件夹下。接着把jar包添加到构建路径,方法是选中jar包,右键->Build Path->Add to Build Path,添加前与添加后的项目结构图如下。
选中scr文件夹,右键New->Package新建包,名称自己随意取,我取的是“VTest”
选中包,右键New->Class新建类,名称随意,我取的是VV,记得勾选添加main函数,途中已经标记,以后新建类时把添加mian函数的勾去掉即可。
双击打开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);
此时,打开捕捉模拟器屏幕工具,具体路径adt-bundle-windows-x86-20140702\sdk\tools,双击uiautomatorviewer.bat文件会弹出一个终端黑窗口,一直都不要关闭,然后双击zipalign.exe,然后会弹出模拟器截屏工具。
打开模拟器,运行微博app,等进入到微博首页后,点击截屏工具的截屏按钮进行截屏(PS:截屏工具菜单栏第二个按钮,下图有标注)。
我们这次先做个简单的,跑起来就行,所以就做一下点击发布按钮,然后点击关闭收起发布界面这个简单的操作。先在截屏工具里点击发布按钮,图中箭头1所示,然后把图中箭头2圈起来的resource-id复制出来(PS:以后测试里,很多时候都会用到resource-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服务器。
点击模拟器右下角查看后台进程按钮,左滑杀掉微博进程,以后每次编译运行时最好都提前杀掉后台待测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);
博文篇幅较长,请耐心实践。如有不足,恳请指正,谢谢。楼楼最近正在写一个微信抢红包,等完成再与大家一同分享哈~












网友评论