• 微信公众号小程序一般基于前端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);    
                        }
                    }

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

  1. 基于python的微信公众号开发教程_基于python的微信公众号开发教程

    应广大python学员的期盼,九宝老师精心制作的"基于python的微信公众号开发"视频教程即将上线. 该课程秉承九宝培训一贯的"简单.高效.快速"的讲课原则, ...

  2. 基于python的公众号课堂教学_基于Python的微信公众号数据挖掘分析

    基于Python的微信公众号数据挖掘分析 华南农业大学电子工程学院 王 建 黄宁香 [期刊名称]电子世界 [年(卷),期]2019(000)011 [总页数]3 运用Python网络爬虫技术对某时事类 ...

  3. 视频教程-基于python的微信公众号开发教程-微信开发

    基于python的微信公众号开发教程 微信企业号星级会员.10多年软件从业经历,国家级软件项目负责人,主要从事软件研发.软件企业员工技能培训.已经取得计算机技术与软件资格考试(软考)--"信 ...

  4. ios系统web(微信公众号)开发遇到的问题及解决方案

    ios系统web(微信公众号)开发遇到的问题及解决方案 参考文章: (1)ios系统web(微信公众号)开发遇到的问题及解决方案 (2)https://www.cnblogs.com/clj2017/ ...

  5. Java在Web端微信公众号授权登录

    Java在Web端微信公众号授权登录 1.需要在微信开发平台配置 url:是自己服务中的微信需要推给你的地址(需要使用二级域名,可以去添加链接描述)购买9块钱1个月使用权或者白嫖都可 token 这个 ...

  6. 微信公众号开发java流程_微信公众号开发教程java 编程语言的特点及选择

    微信公众号开发教程java 编程语言的特点及选择 微信公众号为用户提供了相关的工具,来对微信公众号进行一个简单的开发.但是如果想实现一些复杂的功能,其实还是要借助于一些编程语言的使用.所以要了解,在微 ...

  7. 基于Vue的微信公众号开发及选型研究

    目录 1.背景介绍 1.1微信公众号简介 1.2Vue框架简介 1.3组件库简介 2.开发流程 2.1申请微信公众号 2.2申请微信测试号及配置 2.3安装微信开发者工具 2.4创建Vue项目 2.5 ...

  8. 基于python的微信公众号开发

    最近想自学服务器方面的知识,用微信公众号开发来练手.阅读了一些文章,实践以后总结一下. 租了腾讯云服务器,操作系统为 Ubuntu Server 14.04.1 LTS 64位,分配了一个公网IP地址 ...

  9. 基于Python实现微信公众号爬虫进行数据分析

    学爬虫有什么用 网络爬虫是一个非常注重实践性而且实用性很强的编程技能,它不是程序员的专属技能,任何具有一定编程基础的人都可以学习爬虫,写爬虫分析股票走势,上链家爬房源分析房价趋势,爬知乎.爬豆瓣.爬新 ...

最新文章

  1. The C10K problem原文翻译
  2. resnet50网络结构_Resnet50详解与实践(基于mindspore)
  3. AR Software
  4. HihoCoder 1323 回文字符串
  5. java ognl表达式_java -------ognl表达式入门
  6. c#变量初始化的学习
  7. 电工学的MATLAB实践,基于Matlab/Simulink的电工学电路仿真
  8. 全网最详细关于3D打印的zbrush技术
  9. 推荐8个自媒体免费工具,不仅提高工作效率,还能提供灵感
  10. 身份认证之多因素身份认证(MFA)
  11. Mysql索引:图文并茂,深入探究索引的原理和使用
  12. HDU-圆桌会议问题
  13. 关于Android模块化我有一些话不知当讲不当讲
  14. Vue项目首页-热销推荐组件开发(7-6)
  15. Java后端程序员未来职业规划路线,超用心整理,建议收藏
  16. 论文笔记|A Block-sorting Lossless Data Compression Algorithm
  17. python路径、工作路径、文件路径问题、改变当前路径
  18. CRC16 校验算法
  19. linux之pmap命令查看进程的地址空间和占用的内存
  20. Python 条件控制 — if语句

热门文章

  1. 用DSkinLite实现QQ界面
  2. 计算机出国读研需要准备什呢,出国留学做哪些准备什么东西
  3. 华为游戏初始化init失败,返回错误码907135000
  4. K-优字符串(冬季每日一题 11)
  5. 决策树一CART算法(第四部分)
  6. python 实现开方
  7. 智慧城市产业应用实践,高精度火灾烟雾检测方案详解
  8. 绿叶学习网HTML技术细节
  9. Win10只有飞行模式,没有WLAN图标
  10. CentOS 6.5+Oracle 11.2.0.4的ADG环境搭建