Robotium Robotium 专题 (四): Robotium 中部分常用的方法集锦

风吹麦浪 · 2014年12月10日 · 最后由 恒温 回复于 2016年09月08日 · 3728 次阅读
本帖已被设为精华帖!

这几天一直在忙着产品上线,没有做更新,最近用 robotium 的地方也不是太多,只是在回归某个应用的时候会写一些 Case,对于新的 robotium.jar,还没来得急研究,里面多了几个软键盘操作的方法,明天抽空研究下。
今天就把平时用的较多的方法做个笔记,方便以后使用。

① 点击:

clickOnButton(int) //Clicks on a Button with a given index.
clickOnButton(String) //Clicks on a Button with a given text.
clickOnCheckBox(int) //Clicks on a CheckBox with a given index.
clickOnView(View) //Clicks on a given View.
clickOnText(String) //Clicks on a View displaying a given text.
clickLongOnText(String) //Long clicks on a given View.
clickOnRadioButton(int) //Clicks on a RadioButton with a given index.
clickOnScreen(float, float) //Clicks on a given coordinate on the screen.

② 取得:

getCurrentActivity() //Returns the current Activity.
getText(String) //Returns a TextView which shows a given text.
getView(int) //Returns a View with a given id.
getEditText(String) //Returns an EditText which shows a given text.  
getImage(int) //Returns an ImageView with a given index.

③ 拖拽:

drag(float, float, float, float, int) //Simulate touching a given location and dragging it to a new location.

④ 搜索:

searchText(String) //Searches for a text string and returns true if at least one item is found with the expected text.
searchEditText(String) //Searches for a text string in the EditText objects located in the current Activity.
searchButton(String, boolean) //Searches for a Button with the given text string and returns true if at least one Button is found.


clickOnMenuItem(String);

功能是点击 Menu 按钮,选择文本描述为 String 的菜单,如我们的例子是"Add note"

assertCurrentActivity(String message,String name);

这个是判断当前的 activity 是否和我预期的一致
message 是描述性的文字
name 是指 activity 的名字
关于如何知道 activity 名字,目前的方法是得看源码中的 AndroidManifest.xml--Application label--Application Nodes,在那里我们可以看到所有的 activity 的 name

enterText(int index,string text);

index 用来标识写到哪个 EditText 中。如果当前只打开一个 EditText,那 index=0
text:就是我们要写入的内容

goBack();

相当于手机上的 返回键(back key)

goBackToActivity(String name);

返回到指定的 activity

searchText(String text)

在当前的 activity 中搜索是否含有 text 的内容

clickInListint index);

点击 list 表的第 index 行,进入该文本界面

solo.setActivityOrientation(Solo.LANDSCAPE);

setActivityOrientation,设置手机屏幕显示方式
LANDSCAPE:横向显示
Portrait:竖向显示

clickOnText(String text);

点击包含该文字的地方
其中 text 可以用正则表达式表示
(?i)----忽略大小写。默认情况是大小写敏感的。
正则表达式与 java 保持一致

clickLongOnText(String text);

长时间按住所选的文字

这里需要注意:被测 apk 和测试 apk 必须使用相同的签名。

共收到 14 条回复 时间 点赞

赞一个!

等来了第四篇,注意代码块用代码块格式!

获取 Activity 名字,可以用 adb shell dumpsys activity top | findstr ACTIVITY

有一系列的 waitfor 方法,我觉得对于提高代码的健壮性很有效果

#4 楼 @shixue33 嗯,是的,你也多分享下啊!哈哈!

@shixue33 获取 activity 名字的命令太赞了~

#4 楼 @shixue33 我从没用过 waitfor,感觉很坑,所以自己写的一套兼容机制,很好用。

#7 楼 @pighero001 愿闻其详啊~~~兼容机制大概是个什么样的原理呢?

#8 楼 @shixue33 你可以看看 robotium 的源代码啊,其实他写的也蛮简单的。
就是循环等,超时跳出。捕获异常继续等,如果没异常就可以了啊,简单不?哈哈

#9 楼 @pighero001 我是说你写的,是对这个做了哪样的优化呢?

#10 楼 @shixue33 跟整个架构有关系的,分 exception 类型的,还根据场景分析,轮回次数,进行智能匹配来做,你要明确有哪些情况需要兼容,就事论事,而不是在那边幻想。

#11 楼 @pighero001 Σ( ° △ °|||)︴搜嘎 感觉很复杂啊

#12 楼 @shixue33 淡定,异常处理以及智能等待,非常有必要做的。不然都是误报,即便这样,我这里每次的误报率依然在千分之五以上。

太棒了,给我了很大的帮助!

恒温 [该话题已被删除] 中提及了此贴 09月08日 18:41
恒温 《Robotium 专题》 合集 中提及了此贴 12月02日 18:24
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册