1 在使用 b-sliencer过程中,经常遇到yaml文件读取失败的问题,往往因为一个中英文符号切换问题导致。
因此使用上往往不是很方便。因此后期引入了数据库方式,如下:
当然命名 这边有点问题。key,desc这边需要需改掉。暂时这样吧。
在 page.loadPageDataDb("test.firstpage");将所有的数据load到page中。
大致的代码如下:
public HashMap getDataMap() throws Exception {
List<Object> resultList = DbProxoolUtilTestDB.query("select * from "
+ tableName, 1);
//System.out.println("---------------------"+resultList.size()+"------------------");
map = new HashMap<String, HashMap<String, String>>();
for (Object hm : resultList) {
String key = (String) ((HashMap) hm).get("KEY");
String id = (String) ((HashMap) hm).get("ID");
String css = (String) ((HashMap) hm).get("CSS");
String xpath = (String) ((HashMap) hm).get("XPATH");
String name = (String) ((HashMap) hm).get("NAME");
String desc = (String) ((HashMap) hm).get("DESC");
//System.out.println(key+" "+id+" "+css+" "+xpath+" "+name+" ");
hmValue = new HashMap<String, String>();
// 当且只有id,css,xpath,name有且只有一个的时候才正确
int idflag = 0;
int cssflag = 0;
int xpathflag = 0;
int nameflag = 0;
if (id != null) {
idflag++;
}
if (css != null) {
cssflag++;
}
if (xpath != null) {
xpathflag++;
}
if (name != null) {
nameflag++;
}
// 当且只有id,css,xpath,name有且只有一个的时候才正确
if (key != null) {
if (idflag + cssflag + xpathflag + nameflag == 1) {
if (idflag == 1) {
hmValue.put("id", id);
} else if (cssflag == 1) {
hmValue.put("css", css);
} else if (xpathflag == 1) {
hmValue.put("xpath", xpath);
} else if (nameflag == 1) {
hmValue.put("name", name);
}
} else {
logger.error("请检查元素" + key
+ "数据表中的id,css,xpath,name。要求有且只有一个不为空");
throw new Exception("元素定位文件错误,请检查key为" + key + "的记录");
}
if (desc != null) {
hmValue.put("des", desc);
}else{
hmValue.put("des", "");
}
map.put(key, hmValue);
} else {
logger.error("数据表存在key为null的记录");
throw new Exception("数据表存在key为null的记录");
}
}
//System.out.println(map.get("用户密码"));
return map;
}
这样子可以为以后拓展 提供较好的接口,可能其他的地方需要使用这些element的内容。例如校验点。
2 校验点
在写脚本时,如果一个页面load成功后要检验的地方较多,例如要检验url,要检验xx元素,yy元素,zz元素是否存在,又要检验ww文本存不存在。此时就要书写很多Assert。为了避免这种书写上的不便,此时进行了一部封装,就叫它断言的规范化吧。
数据表设计如下:
例如在登录页面我要校验 100000003 和100000004元素存不存在,文本:进销存、您好、heel存不存在。此时只需要在登录那边如下一句话就可以了
AssertCheck.checkById("1", page);
1为checkid,page为当前BS2AutoTest对象。
在checkbyid方法中,寻找到element的checkkey(第一张表)。然后通过 page.elementExits("key"),判断元素存不存在就可以了。
其他的较简单,db的这个暂时还未想到怎么实现,因此在那边空着。
后续在实现吧。