B-sliencer的拓展---断言的规范化

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的这个暂时还未想到怎么实现,因此在那边空着。


后续在实现吧。




  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值