robotium经常使用方法

①  点击:java

clickOnButton(int) //Clicks on a Button with a given index.android

clickOnButton(String) //Clicks on a Button with a given text.web

clickOnCheckBox(int) //Clicks on a CheckBox with a given index.正则表达式

clickOnView(View) //Clicks on a given View.ide

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.xml

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的内容

clickInList(int index);点击list表的第index行,进入该文本界面

solo.setActivityOrientation(Solo.LANDSCAPE);setActivityOrientation,设置手机屏幕显示方式

LANDSCAPE:横向显示

Portrait:竖向显示

clickOnText(String text);点击包含该文字的地方

其中text能够用正则表达式表示

(i)----忽略大小写。默认状况是大小写敏感的。

正则表达式与java保持一致

clickLongOnText(String text);长时间按住所选的文字

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

 

Robotium问题总结

一、Robotium的测试类ActivityInstrumentationTestCase2继承了TestCase类,即robotiom的测试类是junit3的实例,并无junit4的特征,好比经过annotate的方式来识别子类的新特征,没不能实现@beforeclass,@afterclass等特征。只能经过写setup和teardown,以及test开头的测试用例的方式进行测试case书写。

 

二、有些button没有string,没有text,只能经过index来click, 这样很不直观,并且button的index并非固定的,有可能随着 控件从新加载,顺序也有可能发生变化,没法保证测试结果。查看了robotium源码,发现大多数click方法最终都是经过传入参数转成view,再调 用clickOnView,因而参照着写了一个经过button的ID来click的方法。Button的ID须要查看测试对象的源码中获取。好比导航中就有菜单栏大多数据button就是这种类型的。

 

三、有的activity点击后不能获取焦点,能够经过另外的方式获取activity的内容,好比Activity act = solo.getCurrentActivity();获取当前的activity,而后经过act.findViewById的方式获取控件。

 

四、多个屏幕的状况,能够经过滚屏的方式滑动,solo.scrollToSide(Solo.LEFT),若是多屏属于一个activity,则不须要滑动也能运行case获取数据。

 

五、有时text view或者button的click方法会失效,咋办?答案是在被测程序的AndroidManifest.xml文件里加上这么一句:<supports-screens android:anyDensity="true"/>就好了。

 

六、若是要想在robotium的测试程序里读写SD card肿么办?答案是在被测程序的AndroidManifest.xml文件里加上<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>

    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission>。注意是在被测程序里加上,在测试程序自己的manifest文件里加会很坑爹的。

 

七、listview动态添加item如何判断添加成功。可从添加前及添加后Item个 数判断,先肯定添加item的属性,再经过相应的方法获取item。好比添加一个item可能须要三个textview,那么经过 getCurrentTextViews(View)先后获取到的个数差就相差三个。好比添加黑名单到黑名单列表。

(1)有的listView只有web,或者主要是文本,能够经过getItemAtPosition(i).toString()的方法获取第几行的内容。

solo.clickOnText(chooseProvPage.getListView().getItemAtPosition(i).toString());

(2)有的listView包含多个testView或者button,能够经过findViewById的方法获得某一行的一项的内容。

 

八、没法捕获Toast,这个有点不明白。大概实验了一下,能够使用waitForText这个函数来捕获文字,这个方法返回值是布尔型的,因此返回true就是找到了。

 

九、结果判断

(1)waitForText

该方法适用于点击操做后须要一点时间才返回结果的结果判断。好比联网操做,能够设置适当的延时,等待返回结果,判断结果更加正确。

(2)assertActivity

该方法适用于activity时,能够判断点击操做切换Activity是否正确,能够与waitfortext配合使用。

(3)searchText+assert

当有editText时,输入内容后,可经过searchText查找输入内容是不是预期结果,再将返回结果判断。

相关文章
相关标签/搜索