1 背景
微信小程序是流行的应用载体,很多小伙伴都有自动化测试的需求。由于腾讯的QQ、微信等都是基于腾讯自研的X5内核,而不是谷歌原生的webview,调试会稍微有点麻烦。差异(许多应用程序产品现在流行使用 X5 内核作为其嵌入式 Web 浏览服务)。
需要注意的是,X5内核只支持手机,不支持模拟器。
本教程以最主流的Appium自动化技术为例,讲解如何自动化测试微信小程序。
2 准备工作
>>> step1:打开微信小程序webview调试开关
在聊天窗口中输入以下两个 URL:
检查第二个 URL 打开的页面:
>>> step2:安装UC开发者工具,识别小程序的页面元素信息
Chrome自带的inspect工具需要访问外网才能识别小程序/内嵌网页。很多小伙伴不具备这样的条件,所以建议大家安装UC开发者调试工具,这样小程序的页面元素不用FQ也能识别。信息。
下载链接:
安装后如果小伙伴发现无法识别,可以进行如下设置:
进入微信主页->向下滑动展开小程序列表->点击对应的小程序(这里以Lemon Class软件测试为例)
这里我们可以使用工具获取元素的信息,编写定位表达式,比如定位元素[course]: //a[contains(text(),”course”)]
>>> step3:确认微信小程序对应的进程名
微信有很多进程,我们需要判断当前小程序在哪个进程(当前查询的是com.tencent.mm:appbrand0):
这里需要注意:执行此操作时最好重启微信(清理后台应用,点击重新启动),目的是保证微信后台只有一个被测小程序,即与代码执行过程同步。
>>> step4:chromeDriver驱动匹配
小程序本质上是一个网页,我们可以通过chromeDriver驱动小程序页面来执行。因为小程序使用的X5内核是腾讯重新开发的,所以chromeDriver驱动和webview版本的匹配并不严格按照Appium官方说明。匹配规则,这里测试了几个版本的chromeDriver,发现V2.40版本的chromeDriver比较合适:
下载链接:
下载后解压,将chromeDriver替换为Appium内置chromeDriver所在路径:
Appium.exe的路径resourcesappnode_modulesappiumnode_modulesappium-chromedriverchromedriverwin
3 编写脚本
以Java语言为例,我们使用Maven项目管理工具将Appium的客户端库引入到项目中
io.appium
java-client
7.0.0
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("");
进入小程序可以按照通常的方式完成:
启动微信进入首页->向下滚动展开小程序列表->点击对应的小程序
进入小程序后,我们需要切换上下文:
driver.context("WEBVIEW_com.tencent.mm:appbrand0");
重点!!!切换上下文后,如果直接定位元素,会发现无法定位元素。这是因为小程序打开后会出现三个 Web 窗口:
所以这里一定要记得切换(通过handle句柄):
//需要找到正确的web窗口--腾讯课堂柠檬班软件测试(切换句柄)
//获取所有的窗口句柄
Set 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();
4 总结
微信小程序和普通的 Hybrid 应用进行自动化测试有很多不同,无论是开启 webview 调试开关的方式,还是小程序需要的特殊启动参数配置,以及 chromeDriver 和小程序 webview 的版本匹配。各种因素导致微信小程序。程序执行不是很稳定微信小程序code无效,切换webview的速度比较慢。随着微信版本的迭代更新,部分配置可能会失效。
目前微信本身已经发布了支持小程序自动化测试的框架Minimum微信小程序code无效,但是坑很多。一些第三方的图像识别框架也可以支持小程序的自动化测试,比如网易的Airtest,它好用,但不是很准确和稳定。总的来说,目前微信小程序自动化测试的框架/工具还没有一个好用且足够稳定的框架/工具。当然,随着后续技术的升级,应该会涌现出很多优秀的工具。
原版男神歪老师柠檬课软件测试
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 欧资源网