1
安卓应用开发案例教程
1.13.2.5 10.2.5 脚本编写
10.2.5 脚本编写

在正式编写脚本之前,简单讲解整个测试过程。

首先,打开UIAutomator并进入模拟登录界面,进行控件的捕获,效果如图10-25所示。

其次,在模拟登录界面进行输入,并捕获控件进行提交,如图10-26所示。

图10-23 创建Java项目

图10-24 导入“android.jar”和“uiautomator.jar”两个文件

图10-25 模拟登录界面

图10-26 在模拟登录界面进行输入

最后,在登录成功界面对显示的结果进行捕获,如图10-27所示。

图10-27 登录成功界面

在了解整个测试过程后,正式开始脚本的编写。

1.启动应用程序

要对应用程序进行测试,那么启动应用程序,然后才能进行下一步操作。UIAutomator通过如下命令启动应用程序:

在进行纯黑盒测试时,无法知道等待测试的应用程序名,应该如何找到这个关键信息呢?

下面介绍一个快速找到应用程序名的方法。在Android开发环境中打开Logcat,清空里面的日志,然后在手机里打开“模拟登录”应用,此时回到LogCat,可以看到图10-28所示界面。

在日志中可以找到:

act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER]...cmp=com.derek.logindemo/.Login

这里“cmp”后面就是应用程序名,如图10-29所示。

现在完善UIAutomator的启用应用的命令如下:

图10-28 Logcat信息

图10-29 应用程序名

在代码里创建一个startApplication()方法,如下:

2.捕获控件

启动应用程序后,需要进行登录操作,因此需要捕获以下控件:

(1)用户名编辑框;

(2)密码编辑框;

(3)登录按钮。

用户名编辑框如图10-30所示。

用户名编辑框节点如图10-31所示。

图10-30 用户名编辑框

图10-31 用户名编辑框节点

用户名编辑框详细参数如图10-32所示。

图10-32 用户名编辑框详细参数

为了更加稳定地获取用户名编辑框,通过文本方式定位它,代码如下:

密码编辑框如图10-33所示。

密码编辑框节点如图10-34所示。

图10-33 密码编辑框

图10-34 密码编辑框节点

密码编辑框详细参数如图10-35所示。

图10-35 密码编辑框详细参数

在详细参数里,发现密码编辑框没有文本,也没有描述(content-desc),那么只能通过ID定位它,代码如下:

登录按钮如图10-36所示。

登录按钮节点如图10-37所示。

图10-36 登录按钮

图10-37 登录按钮节点

登录按钮详细参数如图10-38所示。

在详细参数里,发现登录按钮有文本,那就通过文本来定位它,代码如下:

点击登录按钮后,需要捕获登录成功界面中的用户名,并且判断是否为登录时输入的用户名,如果一致则测试通过,不一致则测试失败。登录成功界面如图10-39所示。

登录成功界面节点如图10-40所示。

登录成功界面详细参数如图10-41所示。

图10-38 登录按钮详细参数

图10-39 登录成功界面

图10-40 登录成功界面节点

图10-41 登录成功界面详细参数

这里不可以使用文本捕获控件,因为这里的文本是需要验证的内容,如果直接通过文本捕获控件,一旦验证结果不是想要的文本,程序就会报错。

正确的做法是在当前页面找到这个文本控件,并把这个文本控件里的文本捕获出来,然后与在登录界面输入的文本进行比较,如果一致就说明显示的用户名是正确的。在图10-40中看到,可以尝试使用resource-id来定位这个文本控件,代码如下:

3.操作控件

操作控件的顺序如下:

(1)点击用户名编辑框,输入用户名;

(2)点击密码编辑框,输入密码;

(3)点击登录按钮;

(4)验证登录成功界面用户名。

操作用户名编辑框的代码如下:

密码编辑框的操作与用户名编辑框类似,这里不再重复。下面点击登录按钮,需要注意的是点击登录按钮后页面会跳转,因此需要调用clickAndWaitForNewWindow()方法等待跳转完成,代码如下:

最后进行登录成功用户名的文本验证,需要通过assertEquals()方法进行判断,代码如下:

4.完整代码

“LoginDemoTest”项目的完整代码如下: