UiObject btn1 = new UiObject(new UiSelector().index(12));
assertTrue("The '1' button is not found.", btn1.exists());
btn1.click();
这3行语句的意思是,计算器应用打开以后,第1条语句为获得数字按键"1"对象,从图7-51可以看到"1"按键在计算器应用界面的索引号为12,它是一个"android.widget.ImageButton"类,我们在这里也正应用了索引号(index)这一属性;第2条语句是1条断言语句,判断这个按键是否存在;第3条语句为单击按键"1"。
UiObject btnplus = new UiObject(new UiSelector().index(11));
assertTrue("The '+' button is not found.", btnplus.exists());
btnplus.click();
这3行语句是获得"+"按键,判断"+"按键是否存在和单击"+"按键,因为和前面的语句类似,所以这里不再进行赘述。
UiObject btn2 = new UiObject(new UiSelector().index(13));
assertTrue("The '2' button is not found.", btn2.exists());
btn2.click();
这3行语句是获得"2"按键,判断"2"按键是否存在和单击"2"按键,因为和前面的语句类似,所以这里不再进行赘述。
UiObject btnequal = new UiObject(new UiSelector().index(19));
assertTrue("The '=' button is not found.", btnequal.exists());
btnequal.click();
这3行语句是获得"="按键,判断"="按键是否存在和单击"="按键,因为和前面的语句类似,所以这里不再进行赘述。
如图7-52所示,我们可以看出输入和输出结果放在1个"android.widget.EditText"类文本框中。
UiObject edtresult = new UiObject(new
UiSelector().className("android.widget.EditText"));
这条语句是获得输入和输出结果的内容,即文本框的内容。
System.out.println("Output Result:\r\n"+edtresult.getText());
这条语句用于输出结果内容。
assertTrue("The results should be 3 !",edtresult.getText().contains("3"));
这条语句用于判断这个文本框中是否包含"3",如果包含"3",则证明结果应该是对的,当然可以对脚本进行改造,比如,判断完整的文本信息框输入和输出结果,完全一致再断定是正确的,结合本用例,结合前面的输出和后面的断言,其实也可以断定如果包含"3"就是对的。
【重点提示】
(1)UI Automator 测试用例(Test case)需要继承UiAutomatorTestCase类。而UiAutomatorTestCase 类继承至junit.framework.TestCase类,所以可以用JUnit的Assert类来比较测试结果。
(2)如果脚本中涉及到一些带中文的内容,请到"https://github.com/sumio/uiautomator- unicode-input-helper"下载相应的包文件并参看使用示例或者将Eclipse 设置为UTF-8编码以实现对中文的良好支持,如果大家对这部分设置不是很清楚的话,请参看7.4.1节内容。
(3)在有些情况下UI Automator 测试用例在执行过程中会出现错误,原因是脚本执行速度过快,会导致组件没有显示完整或者没有显示的时候就进行操作,在这种情况下可能会产生错误的,所以建议读者朋友依据脚本业务在关键位置设置延时,即sleep(),如sleep(1000),表示延时1秒。
本文选自《精通移动App测试实战:技术、工具和案例》第七章,本站经人民邮电出版社和作者的授权。
版权声明:51Testing软件测试网获人民邮电出版社和作者授权连载本书部分章节。
任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。
相关文章: