前期准备

微信小程序作为现在流行的一种应用载体,很多小伙伴都有对其做自动化测试的需求,由于腾讯系 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(详细讲解了小程序)

微信小程序自动化_从环境搭建到自动化代码实现过程的更多相关文章

  1. 【微信小程序】---线上环境搭建

    一.前言 通常我们在本地电脑上开发微信小程序,调用和访问小程序会有很多问题.特别是在配有自己后端的情况下,我们通过真机访问我们的小程序会出现不可访问的问题 二.线上环境搭建 在这里我们主要以腾讯云给大 ...

  2. Vue+koa2开发一款全栈小程序(5.服务端环境搭建和项目初始化)

    1.微信公众平台小程序关联腾讯云 腾讯云的开发环境是给免费的一个后台,但是只能够用于开发,如果用于生产是需要花钱的,我们先用开发环境吧 1.用小程序开发邮箱账号登录微信公众平台 2.[设置]→[开发者 ...

  3. 微信小程序入门 第一个页面搭建

    首先搭建首页 微信小程序与web程序非常相似  有非常多的组件  多个组件形成一个页面 每个组件有自己一些特殊的属性来控制显示效果 通过js注册事件控制响应 首先使用swiper实现一个banner轮 ...

  4. 微信小程序开发之https服务器搭建三步曲

    本篇文章主要讲述3个方面的内容,如下: 1.SSL证书的获取 2.服务器 Nginx SSL 证书的配置. 3.如何兼容80端口和443端口以及为什么要同时兼容这两个端口. 1.SSL证书的获取 ht ...

  5. 微信小程序富文本渲染组件html2wxml及html2wxml代码块格式化在ios下字体过大问题

    1.组件使用: 之前微信小程序的富文本渲染组件用的wxParse,对普通富文本确实可以,但是对于代码格式pre标签则无法使用. 下面这个html2wxml很不错,可以支持代码高亮. 详细文档:http ...

  6. 微信小程序支付源码,后台服务端代码

    作者:尹华南,来自原文地址 微信小程序支付绕坑指南 步骤 A:小程序向服务端发送商品详情.金额.openid B:服务端向微信统一下单 C:服务器收到返回信息二次签名发回给小程序 D:小程序发起支付 ...

  7. 微信小程序接入,https服务器搭建和调试

    在进行小程序开发时候,调试时候,希望在本地搭建一个https环境. 准备条件: 1.公网主机(阿里云或者腾讯云主机) 2外网访问工具natapp 步骤: 1.在主机上安装nginx(nginx转发到n ...

  8. 微信小程序开发9-宿主环境(2)

    1.一个小程序页面可以分解成多个部分组成,组件就是小程序页面的基本组成单元.为了让开发者可以快速进行开发,小程序的宿主环境提供了一系列基础组件.组件是在WXML模板文件声明中使用的,WXML的语法和H ...

  9. 微信小程序阿里云服务器https搭建

    已更新 2018-11-20 1.什么是https?HTTPS(全称:安全套接字层上的超文本传输​​协议),是以安全为目标的HTTP通道,简单讲是HTTP的安全版.即HTTP下加入SSL层,HTTPS ...

  10. 壹度DIY_微信小程序组件_小程序插件开发

    开源免费插件,diy特有的页面机制,搭配30+自定义组件,让你的站点每一个页面都可以完全自定义,可无缝对接任意小程序,如有疑问加入qq壹度小程序交流群:302866773:或wx:liu2417301 ...

随机推荐

  1. [FAQ] Vue iframe 的 src 是链接地址却加载了相对路径 ?

    iframe 的 src 是链接, 但是加载的实际链接是相对路径,只有一种可能:链接地址不正确. 检查链接有没有少符号,常见错误:http//,http:/ Refer:Vue的iframe错误 Li ...

  2. [ELK] 生产环境中 Elasticsearch 的重要配置项

    配置 Elasticsearch https://www.elastic.co/guide/en/elasticsearch/reference/current/settings.html 重要的 E ...

  3. dotnet C# 通过 Vortice 使用 Direct2D 特效入门

    本文将告诉大家如何通过 Vortice 使用 D2D 的特效 本文属于 DirectX 系列博客,更多 DirectX 和 D2D 以及 Vortice 库的博客,请参阅我的 博客导航 上一篇: Di ...

  4. 【Buildroot】使用记录

    一.概述 之前只使用过 busybox,每次配置完 roots 文件时,只具备一些基础的工具,像移植 QT 之类的就显得很麻烦.直到现在接触到了 Buildroot,才发现配置工具可以这么简单,对于自 ...

  5. 16、数据库加固-mongo 加固

    1.指定日志与数据库存放位置 在配置文件中设置指向目录位置 自建配置文件:vim /usr/local/mongodb/etc/mongodb.conf dbpath=/data/db logpath ...

  6. 手把手教你整Win10的Linux子系统(Ubuntu)

    手把手教你整Win10的Linux子系统(Ubuntu) https://www.bilibili.com/read/cv7770224/ 设置root用户的密码 可以通过 sudo passwd r ...

  7. ansible系列(34)--ansible实战之部署WEB集群架构(4)

    目录 1. 业务环境部署 1.1 wordpress-base编写 1.2 wordpress-web编写 1.3 wordpress-mysql编写 1.4 wordpress-proxy编写 1. ...

  8. Ubuntu中安装OpenSSL

    一.前期准备 1.1 压缩包下载 在安装openssl之前,我们需要下载对应的压缩包 https://www.openssl.org/source/openssl-3.0.1.tar.gz 此压缩包可 ...

  9. Windows 上安装 PostgreSQL详细图文教程

    转载于微信公众号:SQL数据库运维,如需转载请注明出处,谢谢! PostgreSQL 的 Slogan 是 "世界上最先进的开源关系型数据库". 这里使用 Enterprise D ...

  10. 你知道 Java 有哪些引用吗?

    前言 判断对象是否要回收有引用计数法和可达性算法两种方式,无论哪种都离不开引用,本文将介绍Java的四种引用. 一.概述 二.详解 1. 强引用 概述 在Java程序中,强引用是最常见的也是默认的.n ...