在这里我们提到的自动化测试工具AR场景异常,应该理解为场景下不正常的输入导致的报错。比如在登录页面上,我们输入了错误的用户名或密码,这个时候页面通常会弹出一个错误提示框,把错误信息反馈给我们。
在自动化测试里面,我们需要对这些报错,也是异常进行处理,一般的做法是把这个报错信息记录下来,之后处理下异常,然后继续执行后续的测试。
在这里我们以一个上海泽众CRM客户管理系统的登录场景为例,来看一下场景的异常处理方法:
1.首先,我们来录制一个登陆上海泽众CRM客户关系管理系统的脚本,我们在登陆界面输入用户名和密码,点击登陆,再点击退出系统,录制的脚本信息如下所示:
ar.window("IEFrame_上海泽众软件科技有限公司客户管理系统 - Windows Internet Explorer").setValue("INPUT_text_username", "test"); //输入用户名
ar.window("IEFrame_上海泽众软件科技有限公司客户管理系统 - Windows Internet Explorer").setValue("INPUT_password_password", "test"); //输入密码
ar.window("IEFrame_上海泽众软件科技有限公司客户管理系统 - Windows Internet Explorer").clickControl("INPUT_submit_登 录", 27, 6, "left"); //点击登录
ar.window("IEFrame_上海泽众软件科技有限公司客户管理系统 - Windows Internet Explorer").clickControl("A_退出系统", 23, 2, "left"); //点击退出系统

2. 在这个登录场景下,我们可以将用户名和密码进行参数化处理,具体操作如下:
在原脚本输入用户名和密码的位置,将具体的用户名和密码改为:"+pd.getFrom(“username”)和"+pd.getFrom(“password”)
即:
ar.window("IEFrame_上海泽众软件科技有限公司客户管理系统 - Windows Internet Explorer").setValue("INPUT_text_username", ""+pd.getFrom(“username”)); //输入用户名
ar.window("IEFrame_上海泽众软件科技有限公司客户管理系统 - Windows Internet Explorer").setValue("INPUT_password_password",""+pd.getFrom(“password”)); //输入密码
ar.window("IEFrame_上海泽众软件科技有限公司客户管理系统 - Windows Internet Explorer").clickControl("INPUT_submit_登 录", 27, 6, "left"); //点击登录
ar.window("IEFrame_上海泽众软件科技有限公司客户管理系统 - Windows Internet Explorer").clickControl("A_退出系统", 23, 2, "left"); //点击退出系统
3.设置参数表:
在信息框下方的参数表栏目中,我们可以自己手动添加行和列。
参数表的第一列我们设置的是参数化字段的名称,第一列第一行是用户名:username;第一列第二行是密码:password。这里的设置顺序和一般脚本里面的参数化字段的顺序一致,第一个参数化字段是用户名,第二个参数化字段是密码。

4.循环参数表设置:
设置好参数表中要循环的部分:

5.把要循环执行的脚本放到循环体内,完整的脚本如下:
for(ParameterData pd : ar.getParameterDataList("ghf.xls")/*.subList(0, 3)*/)
{
//ar.parameterData = pd;//ar.parameterData可用于脚本之间传递参数
ar.window("IEFrame_上海泽众软件科技有限公司客户管理系统 - Windows Internet Explorer").setValue("INPUT_text_username",""+pd.getFrom("username"));// 输入用户名
ar.window("IEFrame_上海泽众软件科技有限公司客户管理系统 - Windows Internet Explorer").setValue("INPUT_password_password",""+pd.getFrom("password"));// 输入密码
ar.window("IEFrame_上海泽众软件科技有限公司客户管理系统 - Windows Internet Explorer").clickControl("INPUT_submit_登 录",27,6,"left");// 点击登录
ar.window("IEFrame_上海泽众软件科技有限公司客户管理系统 - Windows Internet Explorer").clickControl("A_退出系统",23,2,"left");// 点击退出系统
}
6.执行脚本:

上面的过程没有涉及到用户名和密码的错误处理,下面我们把这些情况添加进去,用户名输入错误的时候会出现如下的报错信息:

密码错误会出现如下的报错信息:

如果出现这两种情况,我们要把结果异常的脚本录制下来,然后,继续执行后面的测试:


参数表设计:

完整的脚本如下:
for(ParameterData pd : ar.getParameterDataList("ghf.xls")/*.subList(0, 3)*/)
{
//ar.parameterData = pd;//ar.parameterData可用于脚本之间传递参数
ar.window("IEFrame_上海泽众软件科技有限公司客户管理系统 - Windows Internet Explorer").setValue("INPUT_text_username",""+pd.getFrom("username"));// 输入用户名
ar.window("IEFrame_上海泽众软件科技有限公司客户管理系统 - Windows Internet Explorer").setValue("INPUT_password_password",""+pd.getFrom("password"));// 输入密码
ar.window("IEFrame_上海泽众软件科技有限公司客户管理系统 - Windows Internet Explorer").clickControl("INPUT_submit_登 录",27,6,"left");// 点击登录
if (ar.windowExist("#32770_来自网页的消息")){
String str1 = ar.window("#32770_来自网页的消息").getProperty("Static_用户名不存在!", "name");
System.out.println(str1);
ar.window("#32770_来自网页的消息").clickControl("Button_确定", 34, 16, "left");
} else if (ar.windowExist("#32770_来自网页的消息_2")){
String str2 = ar.window("#32770_来自网页的消息_2").getProperty("Static_密码错误!", "name");
System.out.println(str2);
ar.window("#32770_来自网页的消息_2").clickControl("Button_确定_2", 53, 16, "left");
}else if (ar.windowExist("IEFrame_上海泽众软件科技有限公司客户管理系统 - Windows Internet Explorer")){
System.out.println("登录成功!");
ar.window("IEFrame_上海泽众软件科技有限公司客户管理系统 - Windows Internet Explorer").clickControl("A_退出系统",23,2,"left");// 点击退出系统
}
}

下面我们执行下脚本,看看结果:

脚本运行成功,并且我们把参数表中每一组的执行结果都输出到输出区域了,我们成功了!