Robotium 关于 Robotium 获取 toast

剪烛 · 2014年10月16日 · 最后由 朱光精 回复于 2017年11月05日 · 3503 次阅读
本帖已被设为精华帖!

我不知道有没有人像我一样曾经有段时间很纠结 robotium 获取 toast 的问题。在很多场景下,我总是希望如果某个操作发生功能性的错误(一般以 toast 形式提示错误信息),我总是希望脚本把它记录下来,但是错误信息和错误总是各种各样的,不可能一一匹配。或者有一个功能我要统计它的健壮性,记录错误信息感觉也是必要的。
在我仅仅只会百度的时候,很多 robotium 的教程说没法获取 toast,但是可以使用 waitforText 或者 searchText 通过关键词。
那么问题来了,waitforText 和 searchText 可以检索到关键词,那么说明 toast 对应的对象存在检索 list 里边,那为啥没法获取 toast 呢。
昨天群里银神点了一下,于是我今天试验了下。

先随便建了个 android app 的项目,加了个按钮,按钮加点击事件,点击弹出一条 toast,大概像这样:

在测试工程中,用工具把当前页面的布局信息存到 sd 卡上(使用的是 GetViewInfo_for_Android 里的 jar 包),代码大概像这样:

GetCurrentInfo gci = new GetCurrentInfo(solo);
solo.sleep(3000);       
solo.clickOnView(solo.getView("button1"));
gci.getCurrentInfo(false);

会在 sdcard 卡 GetInfoFile 文件夹存一个 xml 文件。
打开 xml 文件,我就凌乱了。

所以,结论就是 getView("message") 就可以获取到了嘛。
下午再去实践下。可能是个很傻的问题,但是确实我现在才知道。如果有错误求指出 (o)/~

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 34 条回复 时间 点赞

好腻害得妹子。。

#1 楼 @lihuazhang 😭最后证明了一个好傻的结论

#2 楼 @shixue33 不傻啊 我都不知道

妹子的探索精神很赞啊,现在的测试行业非常缺少你这种探索精神。

赞一个!!

我也不知道。。

我也不知道..

匿名 #9 · 2014年10月17日

牛叉

犀利。 超赞。
https://github.com/selendroid/selendroid/issues/609
selendroid 可以做到。 但是 appium 貌似还没引入这个 API
因为 uiautomator 没有提供对应的 toast 识别 api。

厉害,学习了

赞一个

楼主 我遇到同样的问题 ,请问你那个获取到了么????

剪烛 #14 · 2014年12月01日 Author

#13 楼 @romatic 0.0 我已经说了解决方法了啊

剪烛 #18 · 2014年12月01日 Author

#13 楼 @romatic getView("message") 就可以获取到了,是一个 TextView,必要的时候请设置延时。获取时机要掌握好

剪烛 #17 · 2014年12月05日 Author

#13 楼 @romatic 有一些做了处理的 toast,需要你自己去抓取它的 id 名,可以通过看源码看到,也可以用我之前发的一个 getViewInfo_for_Android 的工具抓到

很赞!继续加油!:)

死不死有点麻烦啊,先运行起来,然后去 sd 卡中看 id,再通过 id 得到 text,然后再判断 text 是否有误。
如果做起来许多 toast 的话这样搞有点累吧……

剪烛 #14 · 2015年03月30日 Author

#18 楼 @sailen 一般来说 toast 的 ID 就是 message,其他的得自己获取了。但是一般来说如果有自定义的 toast,id 也一般不会变。不需要频繁的去查。而且这个可以写成脚本哦。

ps:换头像啊亲

剪烛 #20 · 2015年03月30日 Author

#18 楼 @sailen 除了这个办法好像没有办法弄到 toast 的 id。uiautomatorviewer 抓取不到 toast

#19 楼 @shixue33 我也一直没解决这个问题,你这个链接还是别人推荐我过来的。你已经写成脚本了?可以让俺瞅瞅不

剪烛 #22 · 2015年03月30日 Author

#21 楼 @sailen 没有,你可以看看这个https://github.com/shixue33/GetViewInfo_for_Android 界面做得太糙,勉强能用。
如果自己写脚本的话,就把启动测试,pull 文件写成脚本就好了。其他的好像没有办法

#22 楼 @shixue33 好的,先 mark,有时间看看。你接触过接口测试吗?现在在搞接口测试,打算用 jmeter 做,但不知道接口文档中的 header 和 body 参数放在哪,看了好多资料也没说,你知道不呢?

剪烛 #18 · 2015年03月30日 Author

#23 楼 @sailen 自己写单元测试就可以了。

#24 楼 @shixue33 啊哦……说的好简单,搞不来啊……你是说写 junit?用断言的方式?

剪烛 #26 · 2015年03月30日 Author

#25 楼 @sailen 对,java 的 jnuit ,python 的 unittest,编程语言或者脚本差不多都能搞。自己组装请求就 OK 啦

#26 楼 @shixue33 我们接口没有测试用例,领导说看看功能正常就 ok 了,说可以用 jmeter 或者 LR,于是我就搞 jmeter,还没搞成功。junit 之前倒是有接触一下,不知道能不能搞成功,谢了。可还是想知道 jmeter 不可以吗?省的写代码嘛

剪烛 #28 · 2015年03月30日 Author

#27 楼 @sailen 觉得用 jemeter 大材小用了,可以用的。参数是可以配置的

剪烛 #29 · 2015年03月30日 Author

#27 楼 @sailen 另外发帖问吧。跟此贴无关

appium 党经过围观

厉害厉害,学习学习

赞,以后学习了

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