微信小程序自动化_从环境搭建到自动化代码实现过程
前期准备
微信小程序作为现在流行的一种应用载体,很多小伙伴都有对其做自动化测试的需求,由于腾讯系 QQ、微信等是基于腾讯自研 X5 内核,不是谷歌原生 webview,所以调试会有些许差异(现在很多 app 产品也开始流行采用 X5 内核作为其内嵌 Web 浏览服务)。
genymotion、夜神等模拟器是intel的X86架构,很多app安装不了,比如微信、qq等(虽然说可以通过安装arm解释器来解决该问题,但是进行X5内核调试的话也会出现问题),建议最好是一台真实的手机来做。
需要注意的是 X5 内核只支持手机,模拟器是不支持的。调试和抓取小程序webview这些都需要真机完成
链接:http://testingpai.com/article/1615452452052
https://www.cnblogs.com/yyoba/p/9455519.html
1、
打开手机微信调试模式
微信基于腾讯自研X5内核,所以需要对手机开启X5调试模式,设置允许抓取小程序的Inspect,方便对页面元素进行定位,这些工作的前提都需要开启调试模式
打开webview微信小程序的开关
1、 往文件助手或微信好友发送http://debugx5.qq.com,这个页面可正常打开,X5内核的设置页面
2、
如果点击这个http://debugx5.qq.com,进到的页面提示当前非X5内核,按照给出的提示操作,聊天框输入http://debugtbs.qq.com并点击,提示要在聊天输入框输入debugmm.qq.com/?forcex5=true
3、
根据提示,在聊天输入框输入debugmm.qq.com/?forcex5=true,并点击,弹出如下
4、 成功切换之后,再点击http://debugx5.qq.com,就可以进到X5调试内核页面
5、 首次打开,要安装线上内核,点击【安装线上内核】,会自动开始下载,下载完成后,提示重启,点击重启;最好将微信也一起结束进程重启一下。
6、 点击DebugX5,进可以进到第一步的页面,设置抓取小程序webview的开关了
7、 如果第六步报“debugx5页面仅在x5内核时有效,由于当前没有使用X5内核,无法打开Debugx5”,这个时候微信重启,重新打开吧
2、
验证是否能抓到微信小程序的webview
前提条件:手机通过数据线连接到电脑端,电脑端打开chrome,输入chrome://inspect/#devices,即可在这里看到连接的设备和抓取到信息。
Chrome 自带的 inspect 工具识别小程序/内嵌 Web 页面需要访问外网
建议使用:uc-devtools进行抓取inspect,国内有些限制,抓取到的inspect为空白。下载地址:https://dev.ucweb.com/(注:不能在谷歌浏览器下载,弹不出下载提示框)
打开微信,调起小程序,就可以查看抓到的webview了
3、
!!!微信最新版本不能抓取到webview
安装了微信最新版本,操作小程序,怎么都抓不到小程序的webview
解决方案:降低微信版本到7.0.22
操作方法:
1、有些应用商场是有历史版本可以下载的,可先下载应用商城,搜索微信,选择历史版本,选择7.0.22进行安装(7.0.10版本太低,登录提示要用新版本)
豌豆荚可用
2、卸载最新版本前,先将手机的聊天记录备份到电脑端,使用完之后,可以将电脑端的聊天记录恢复到手机
3、重装了7.0.22版本的微信后,打开微信小程序的webview的方法同第一大点的步骤,抓不到,重启再试试!
参考文章:https://blog.csdn.net/weixin_46003972/article/details/120670598
实际操作
1、配置chromeDriver
和app自动化类似,依靠appium做自动化,小程序本质上还是 Web 页面,我们可以通过 chromeDriver 驱动小程序页面执行,小程序因为使用的 X5 内核是经过腾讯二次开发过之后的,所以 chromeDriver 驱动与 webview 版本匹配并不严格按照官方 Appium 说明的匹配规则,这里试验了几个版本的 chromeDriver,发现 V2.40 版本
下载地址:https://npm.taobao.org/mirrors/chromedriver
下载完毕后解压,将 chromeDriver 替换到 Appium 的自带 chromeDriver 所在路径:
Appium.exe所在路径\resources\app\node_modules\appium\node_modules\appium-chromedriver\chromedriver\win
下载完成后,到appium配置驱动的执行路径,设置前置,使用这个前置启动
2、获取小程序的对应进程名
在获取小程序进程名前,要先获取微信的包名
com.tencent.mm
获取小程序的进程名
adb shell dumpsys activity top | findstr ACTIVITY
3、uc-devtools进行元素的定位,编写定位元素的定位
3、代码实现
1、 和app自动化一样,要先打开app,打开app的配置信息
2、启动微信进入到主页->
下滑展开小程序列表-> 点击对应小程序
3、进入到小程序,实际上是webview,需要切换到webview进行操作,这个时候就需要用到切换上下文,switch_to.context()
4、切换到小程序之后,实际上是操作chrome页面,定位元素要用回要用webdiriver的定位元素的BY
参考:https://www.cnblogs.com/lizhe860/p/14486432.html(详细讲解了小程序)
微信小程序自动化_从环境搭建到自动化代码实现过程的更多相关文章
- 【微信小程序】---线上环境搭建
一.前言 通常我们在本地电脑上开发微信小程序,调用和访问小程序会有很多问题.特别是在配有自己后端的情况下,我们通过真机访问我们的小程序会出现不可访问的问题 二.线上环境搭建 在这里我们主要以腾讯云给大 ...
- Vue+koa2开发一款全栈小程序(5.服务端环境搭建和项目初始化)
1.微信公众平台小程序关联腾讯云 腾讯云的开发环境是给免费的一个后台,但是只能够用于开发,如果用于生产是需要花钱的,我们先用开发环境吧 1.用小程序开发邮箱账号登录微信公众平台 2.[设置]→[开发者 ...
- 微信小程序入门 第一个页面搭建
首先搭建首页 微信小程序与web程序非常相似 有非常多的组件 多个组件形成一个页面 每个组件有自己一些特殊的属性来控制显示效果 通过js注册事件控制响应 首先使用swiper实现一个banner轮 ...
- 微信小程序开发之https服务器搭建三步曲
本篇文章主要讲述3个方面的内容,如下: 1.SSL证书的获取 2.服务器 Nginx SSL 证书的配置. 3.如何兼容80端口和443端口以及为什么要同时兼容这两个端口. 1.SSL证书的获取 ht ...
- 微信小程序富文本渲染组件html2wxml及html2wxml代码块格式化在ios下字体过大问题
1.组件使用: 之前微信小程序的富文本渲染组件用的wxParse,对普通富文本确实可以,但是对于代码格式pre标签则无法使用. 下面这个html2wxml很不错,可以支持代码高亮. 详细文档:http ...
- 微信小程序支付源码,后台服务端代码
作者:尹华南,来自原文地址 微信小程序支付绕坑指南 步骤 A:小程序向服务端发送商品详情.金额.openid B:服务端向微信统一下单 C:服务器收到返回信息二次签名发回给小程序 D:小程序发起支付 ...
- 微信小程序接入,https服务器搭建和调试
在进行小程序开发时候,调试时候,希望在本地搭建一个https环境. 准备条件: 1.公网主机(阿里云或者腾讯云主机) 2外网访问工具natapp 步骤: 1.在主机上安装nginx(nginx转发到n ...
- 微信小程序开发9-宿主环境(2)
1.一个小程序页面可以分解成多个部分组成,组件就是小程序页面的基本组成单元.为了让开发者可以快速进行开发,小程序的宿主环境提供了一系列基础组件.组件是在WXML模板文件声明中使用的,WXML的语法和H ...
- 微信小程序阿里云服务器https搭建
已更新 2018-11-20 1.什么是https?HTTPS(全称:安全套接字层上的超文本传输协议),是以安全为目标的HTTP通道,简单讲是HTTP的安全版.即HTTP下加入SSL层,HTTPS ...
- 壹度DIY_微信小程序组件_小程序插件开发
开源免费插件,diy特有的页面机制,搭配30+自定义组件,让你的站点每一个页面都可以完全自定义,可无缝对接任意小程序,如有疑问加入qq壹度小程序交流群:302866773:或wx:liu2417301 ...
随机推荐
- dotnet 警惕使用 StackTrace 加获取方法标记 Attribute 特性在 Release 下被内联
大家都知道,在 dotnet 里的 Debug 下和 Release 下的一个最大的不同是在 Release 下开启了代码优化.启用代码优化,将会对生成的 IL 代码进行优化,同时优化后的 IL 也会 ...
- 2024-04-27:用go语言,在一个下标从 1 开始的 8 x 8 棋盘上,有三个棋子,分别是白色车、白色象和黑色皇后。 给定这三个棋子的位置,请计算出要捕获黑色皇后所需的最少移动次数。 需要注意
2024-04-27:用go语言,在一个下标从 1 开始的 8 x 8 棋盘上,有三个棋子,分别是白色车.白色象和黑色皇后. 给定这三个棋子的位置,请计算出要捕获黑色皇后所需的最少移动次数. 需要注意 ...
- 2021“MINIEYE杯”中国大学生算法设计超级联赛(1)
2021"MINIEYE杯"中国大学生算法设计超级联赛(1) 1001 Mod, Or and Everything 题意: 对于每次输入的数字n,求(n%1)|...(n%n)的 ...
- Flink Forward #Asia2020 流批一体及数仓资料整理
阿里云实时计算负责人 - 王峰(莫问)/ FFA_2020-Flink as a Unified Engine - Now and Next-V4 2020年Flink 基于Flink 的流批一体数仓 ...
- gprMax电磁波正演模拟方法
文章首发于:https://blog.zhaoxuan.site/archives/37.html: 第一时间获取最新文章请关注博客个人站:https://blog.zhaoxuan.site. 目录 ...
- C# 实现Ping远程主机功能
C#实现Ping远程主机功能. 1.引用nuget包 Wesky.Net.OpenTools OpenTools是一个用于提高开发效率的开源工具库.该项目为个人开源项目,采用MIT开源协议,永不更改协 ...
- angular 获取DOM元素 多种方式
第一种方式 ---ViewChild <div #box>我是div----添加在html页面中</div> @ViewChild('box') box: ElementRef ...
- pageOffice控件实现在线编辑Word 只能加批注的功能
OA办公中,业务需要编辑打开word文档后 文档的正文不能改变,只能对文档进行加批注的操作 怎么实现编辑打开word文档后 文档的正文不能改变,只能对文档进行加批注的操作呢? # 1.实现方法 通过p ...
- VSCode:Mac(M1)配置VSCode中C/C++环境(只需三步)
只需三步. 1. 下载CodeLLDB插件: 2. 配置tasks.json { "version": "2.0.0", "tasks": ...
- Vue cli之路由router
一.安装路由 Vue-router用于提供给vue项目在开发中用于绑定url和组件页面的关系的核心插件. 默认情况下,vue没有提供路由的功能,所以我们使用vue-router,并需要在项目根目录. ...