基于web的微信公众号程序自动化测试-java

  • 微信公众号小程序一般基于前端APPH5,前后分离或不分离;自动化回归中基于appium不够稳定,基于web测试脚本更加稳定且效率更高;

实际中会遇到些问题,如微信授权,页面元素渲染效果差无法获取元素,接口间依赖参数不易获取等;

  1. 微信授权问题:模拟微信授权,httpclient添加请求头User-Agent模拟微信授权

            CloseableHttpClient httpclient = HttpClients.createDefault();
            String url="http://XXX";
            HttpPost httppost = new HttpPost(url);
            HashMap<String ,String> postHeader = new HashMap<String, String>();
            postHeader.put("User-Agent","Mozilla/5.0 (Linux; U; Android 2.3.6; zh-cn; GT-S5660 Build/GINGERBREAD)           AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 MicroMessenger/4.5.255");
            postHeader.put("Referer","http://wxopen.dev.choicesaas.cn/oauth2/authorize/appidXXX?scope=snsapi_userinfo");

  1. APPH5使用浏览器打开页面元素渲染效果差,部分元素无法获取,可通过浏览器开发者模式模拟手机

              打开开发者模式

                    Robot robot = new Robot();
                    robot.keyPress(KeyEvent.VK_F12);
                    robot.keyRelease(KeyEvent.VK_F12);

              模拟手机

                  Robot robots = new Robot();
                  robots.keyPress(KeyEvent.VK_CONTROL);
                  robots.keyPress(KeyEvent.VK_SHIFT);
                  robots.keyPress(KeyEvent.VK_M);   

  1. 遇到前后端不分离的程序,通过jsoup包获取js中对象属性值Document document = Jsoup.parse(result);
            Document document = Jsoup.parse(responseResult);
            /*取得script下面的JS变量*/
            Elements e = document.getElementsByTag("script").eq(11);
            Elements tag = document.getElementsByTag("script");
            Element element2 = tag.get(tag.size()-1);
            String[] data2 = element2.data().toString().split("var");

            /*循环遍历script下面的JS变量*/
            for (Element element : e) {
                
                /*取得JS变量数组*/
                String[] data = element.data().toString().split("var");
                int flag=0;
                for(String variable : data){
                    
                    /*过滤variable为空的数据*/
                    if(variable.contains("=")){
                        if(flag==0) {
                        /*取到满足条件的JS变量*/
                        if(variable.contains("serviceData") ){
                            flag=1;
                            String[]  kvp = variable.split("=");
                            //根据id截取
                            String[] split = kvp[5].split("id: '").split("outTradeNo: '");
                            String  extend=split[1];//0599d621deec4e7fb02c51e4f267cc58//outTradeNo: '
                            String  ext=split[1];//outTradeNo: '
                            outTradeNo=ext.substring(0, 26);
                            System.err.println(outTradeNo);    
                        }
                    }
     
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值