背景

微信小程序作为现在流行的一种应用载体,很多小伙伴都有对其做自动化测试的需求,由于腾讯系QQ、微信等是基于腾讯自研X5内核,不是谷歌原生webview,所以调试会有些许差异(现在很多app产品也开始流行采用X5内核作为其内嵌web浏览服务)。

需要注意的是X5内核只支持手机,模拟器是不支持的。

我们的教程以最主流的Appium自动化技术为例讲解如何对微信小程序做自动化测试。

准备工作

step1:打开微信小程序webview调试开关

聊天窗口输入如下两个URL:

http://debugmm.qq.com/?forcex5=true

X5内核调试专用页

在第二个URL打开的页面中勾选:

step2:安装UC开发者工具并识别小程序页面元素信息

chrome自带的inspect工具识别小程序/内嵌web页面需要访问外网,很多小伙伴不具体这样的条件,所以推荐大家安装UC开发者调试工具,这样不用FQ也可识别到小程序的页面元素信息

下载地址:https://dev.ucweb.com/

安装完之后如果有小伙伴发现识别不了可进行如下设置:

进入微信主页面->向下滑动展开小程序列表->点击对应小程序(这里以柠檬班软件测试为例)

这里我们即可使用工具获取元素的信息并写出定位表达式了,比如定位到【课程】这个元素://a[contains(text(),"课程")]

step3:确认微信小程序对应的进程名

微信有很多的进程,我们要确定当前小程序是位于哪个进程中(当前查询到的是com.tencent.mm:appbrand0):

这里需要注意:进行该操作的时候最好重启微信(在后台清理应用重新点击启动),目的是为了保证被测小程序在微信后台只有一个,跟代码执行过程保持同步。

step3:chromeDriver驱动匹配

小程序本质上还是web页面,我们可以通过chromeDriver驱动小程序页面执行,小程序因为使用的X5内核是经过腾讯二次开发过之后的,所以chromeDriver驱动与webview版本匹配并不严格按照官方Appium说明的匹配规则,这里试验了几个版本的chromeDriver,发现V2.40版本的chromeDriver是比较合适的:

下载地址:https://npm.taobao.org/mirrors/chromedriver

下载完毕后解压,将chromeDriver替换到Appium的自带chromeDriver所在路径:

Appium.exe所在路径\resources\app\node_modules\appium\node_modules\appium-chromedriver\chromedriver\win

编写脚本

这里以Java语言为例,我们使用Maven项目管理工具在项目中引入Appium的客户端库

<dependency> <groupId>io.appium</groupId> <artifactId>java-client</artifactId> <version>7.0.0</version> </dependency>

Appium启动App的常规代码就不再赘述了,这里需要注意的是Appium启动微信做小程序自动化测试除了常规的配置如:deviceName、platformName、appPackage、appActivity之外,还需添加如下配置参数:

// 支持X5内核应用自动化配置 desiredCapabilities.setCapability("recreateChromeDriverSessions", true); ChromeOptions options = new ChromeOptions(); //com.tencent.mm:appbrand0为前面通过adb命令查询到的小程序进程名,同之前保持一致 options.setExperimentalOption("androidProcess", "com.tencent.mm:appbrand0"); desiredCapabilities.setCapability(ChromeOptions.CAPABILITY, options); // 初始化会默认将chrome浏览器打开,需要将Browser置为空 desiredCapabilities.setBrowserName("");

进入到小程序可以通过常规方式:

启动微信进入到主页->下滑展开小程序列表->点击对应小程序

进入到小程序之后我们需要切换context:

driver.context("WEBVIEW_com.tencent.mm:appbrand0");

划重点!!!切换context之后如果直接定位元素会发现元素是定位不到了,这是因为小程序打开之后会存在三个web窗口:

所以我们这里一定要记得切换(通过handle句柄)

//需要找到正确的web窗口--腾讯课堂柠檬班软件测试(切换句柄) //获取所有的窗口句柄 Set<String> allHandles = driver.getWindowHandles(); for (String handle:allHandles){ //通过窗口的标题来判断 if(driver.getTitle().equals("腾讯课堂柠檬班软件测试")){ break; }else { //切换句柄 driver.switchTo().window(handle); } }

之后我们就可以通过常规的方式去定位/操作元素了:

driver.findElement(By.xpath("//a[contains(text(),\"课程\")]")).click();

总结

微信小程序与普通的Hybrid应用做自动化测试存在很多的区别,不管是webview调试开关的开启方式,还是小程序需要的特殊启动参数配置,以及chromeDriver与小程序webview的版本匹配,种种因素导致微信小程序执行并不是很稳定,而且切换webview速度也比较慢。随着微信版本的迭代更新,可能一些配置会失效。

目前微信自己有发布了支持小程序自动化测试的框架Minium,但坑比较多。第三方的一些图像识别框架也可以支持小程序的自动化测试,比如网易的Airtest,上手简单,但准确性和稳定性不高。总的来说目前市面上并没有一款足够好用、足够稳定的微信小程序自动化测试的框架/工具。当然,随着后续技术的升级,应该会有很多的优秀工具涌现出来。

福利
软件测试简历模板,实战电子书,大厂面试题私信小编“资料”免费领取 点击链接直接获取《软件测试全套基础/进阶/转行资料》

软件测试题库:包括了软件测试基础,MySQL数据库,Linux,Java自动化,Python自动化,性能测试,计算机基础,安全测试,接口测试,逻辑思维题,ISTQB,面试现场重现有单选题,多选题,判断题,简答题,提交答案即可获得答案,很快捷方便,随便注册一下就行 题库网站:点击链接即可

发布于 2022-07-01 21:08

史上最全最新微信小程序自动化教程相关推荐

  1. 标星 2.7w+ 堪称史上最全的微信小程序开发资源汇总

    [公众号回复 "1024",免费领取程序员赚钱实操经验] 2017 年 1 月,微信小程序一夜成名. 微信小程序成名后,各大厂开始效仿,相继出现了支付宝.百度.今日头条.QQ.抖音 ...

  2. 微信小程序之目前为止史上最全的微信小程序项目实例, 微信小程序实战学习

    wx-gesture-lock  微信小程序的手势密码 WXCustomSwitch 微信小程序自定义 Switch 组件模板 WeixinAppBdNovel 微信小程序demo:百度小说搜索 sh ...

  3. 【亲鉴】史上最实用的微信小程序源代码大全

    ##逼格提升区 : 微信小程序 - github简历(monkindey/wx-github) 微信小程序-程序员老黄历(xujinyang/CoderCalendar-WeApp) 微信小程序dem ...

  4. 史上最全的微信开放平台对接教程(附完整源代码,Github开源)

    GitHub:https://github.com/iccb1013/Sheng.WeixinConstruction 因为个人精力时间有限,不会再对现有代码进行更新维护,不过微信接口比较稳定,经测试 ...

  5. 微信小程序实战教程:模仿—网易云音乐(二)

    接上一篇:微信小程序实战教程:模仿-网易云音乐(一) wxml进行渲染: <!--歌词--> <view class="lyric-content" hidden ...

  6. IM开发宝典:史上最全,微信各种功能参数和逻辑规则资料汇总

    1.引言 IM应用的初学者们,在补全了各种基础技术知识后(如果您仍不具备这些知识,建议马上阅读<新手入门一篇就够:从零开发移动端IM>),在动手编码实践时,很多时候纠结的并不是功能该如何实 ...

  7. 视频教程-2020最新微信小程序基础+实战精讲视频-微信开发

    2020最新微信小程序基础+实战精讲视频 负责过多个软件项目的研发.设计和管理工作,拥有项目管理师认证.项目监理师中级认证.出版过的图书有<微信小程序开发图解案例教程><Axure ...

  8. 【微信小程序】基于Java+uniapp框架开发的全开源微信小程序商城系统

    应用介绍 基于Java+uniapp框架开发的全开源微信小程序商城系统,前端采用目前主流的uniapp框架开发,后端采用Java语言开发,前后端代码全部开源,减少重复造轮子,支持小程序商城秒杀.优惠券 ...

  9. 2022最新微信小程序游戏:一起来找茬

    正文: 2022最新微信小程序游戏:一起来找茬,有需要的自行去体验吧,其它的就没什么好介绍的了,程序是完整的. 程序: wwwsu.lanzouw.com/iVEie0bm8l5i 图片:

最新文章

  1. windows下vs2013使用C++访问redis
  2. 内地计算机学校,全球大学计算机实力排名:清北人工智能内地前2
  3. 笔记-项目立项管理-项目论证的程序
  4. 2017-2018-2 20155228 《网络对抗技术》 实验四:恶意代码分析
  5. Win7旗舰版系统开启硬盘ahci模式的方法
  6. ThinkPHP如果表名有下划线需要用Model应该怎么做?
  7. .net core @Html 自定义属性中包含特殊符号解决
  8. php mysql完整_BBS(php mysql)完整版(七)
  9. Unity 烘焙材质到单一贴图的脚本
  10. 恐怖的aliedit
  11. endnote x9打开闪退_Endnote X9 详细教程
  12. 3A之自动白平衡(AWB)篇
  13. CDH安装Tez 0.8.5
  14. 一次搞懂什么是大数据
  15. 2022年制冷与空调设备运行操作最新解析及制冷与空调设备运行操作作业考试题库
  16. 常用智能小车直流减速电机选型
  17. 纯手写归纳hmm 模型
  18. Mysql统计数据库和表大小
  19. 唐骏:10亿身价的智慧与悲哀~
  20. 微信小程序开发之路(十三)正式开工--设计ER图与数据库的创建

热门文章

  1. 云计算高级运维第一阶段项目实战:在局域网中使用 awl 伪装 MAC 地址进行多线程 SYN 洪水攻击
  2. nb 底特律 外包公司,招人,
  3. 为什么技术面过了却挂在了HR面试之”谈谈你的职业生涯规划“
  4. Dubbo的基本使用
  5. 随机函数(随机取数)
  6. java系统爬塔游戏,如何玩爬塔游戏?一目了然,每天只需2分钟
  7. Caused by: org.dom4j.DocumentException异常信息记录
  8. 修炼“七字诀”的小米——读《小米创业思考》
  9. “感动中国”2012年度人物颁奖词
  10. 餐饮系统店家后端基础功能构建