Appium Appium 跑 Selendroid 模式的几点总结,今天总算跑起来了!

yuge · 2015年05月20日 · 最后由 Winnie 回复于 2015年05月27日 · 2071 次阅读

搞了 selendroid 大半年都没搞起来,今天起来了,那个高兴啊……
当然,其实也没什么高兴的,后面的路还长着,但是记录一下自己这么段时间填过的坑,还是很有必要的。一方面作为一个备忘长留 testerhome,另外一方面也可以给其他同行一些启发,能帮助到大家我又何乐而不为呢。

从一开始接触 appium,就觉得是一个很不错的东西,配置环境,跑 session,跑用例基本都一气呵成,那个给力呀。无奈公司的坑爹 app+ 公司坑爹的网络都组合到了一起,再好的工具也没办法玩出什么花样,平时用着貌似还好,一到跑用例就各种加载中。泪奔啊,连分享会的时候也不例外,丢人哪,简直想把手机都给砸了!
但是公司烂 wifi 也不是一年两年了,而 app 在公司网络环境下这种烂表现也不是一次两次了,等开发修就除非换一班人马,咱办?
还好我有神机 n1-y,无意中刷了一个救砖包,各种网络环境操作起来加载页面都秒进,NB,但是 ROM 是 4.2.1 的,没法用 appium。怎么办!只能折腾 selendroid 了。

第一坑:session 起不来。各种百度,虽有点进展但最终无果
第二坑:签名错误,INSTRUMENTATION_FAILED。类似这样的错误,有说是 debug.keystore 不一致导致,但我不是,无果。
第三坑:appium 的代码在 Selendroid 的模式下不一定能跑,比如 by.id 方法识别控件两者是完全不一样的,而我没想到是这方面原因,又各种浪费时间。

下面说说我是怎么成功的吧:
总体来说,玩 appium 的朋友们应该都跑 appium 成功过了,网上文档也多,成功不稀奇。我们要做的,就是稍微做一些改变就可以让他跑 selendroid:

改变 1:
加 selendroid-standalone-0.15.0-with-dependencies.jar 的依赖到当前工程,切记!
没有这个包的到官网下载:http://search.maven.org/#search|ga|1|selendroid

改变 2:

cap.setCapability("automationName","Selendroid"); 

改变 3:
设置 app 相关信息,这一点有的朋友可能在 appium 也设置过了,所以也不一定就能称为改变,这里就不咬文嚼字了,直接上代码

File classpathRoot = new File(System.getProperty("user.dir"));
File appDir = new File(classpathRoot, "apps/app1");  
File app = new File(appDir, "app.apk");
cap.setCapability("app", app.getAbsolutePath());

第二行代码可能基础差点的朋友不一定明白,其实就是在当前工程目录下建子目录 apps,在 apps 下面建 app1 文件夹,然后把 app.apk 文件放进去就可以了。

改变 4:
在 eclipse 里跑代码时一定要用 debug as 的方式跑,这样就可以把 inspector 跑起来了,但同时要记住端口改成 8080(appium 里跑 selendroid 端口变成了 8080)。

大概就是这些吧!后续想到别的再补充,下面贴点图丰富一下内容:

OK,就这些,不知道有没有营养,感谢 testerhome,感谢乙醇让我玩起了 appium,不然就没 selendroid 什么事了!

共收到 2 条回复 时间 点赞

增加头像,请调整格式

请问在哪里改 selendroid 端口呢

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册