前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >欢乐送小程序自动化探索实践

欢乐送小程序自动化探索实践

作者头像
测试开发社区
发布2019-11-28 18:08:47
9660
发布2019-11-28 18:08:47
举报
文章被收录于专栏:测试开发社区测试开发社区

本文主要介绍转转欢乐送分享到微信群场景的自动化实践。

小程序自动化准备工作

1、 打开微信上小程序的调试功能(为了拿到小程序的context)

在私信聊天页,输入http://debugx5.qq.com,点击后跳转到x5调试页面,点击信息,然后勾选【打开TBS内核Inspector调试功能】。

2、小程序的进程(appium的配置参数chromeOptions中要用到)

没有启动微信,没有启动小程序时在adbshell下的进程清单如下:

刚启动微信,没有进入到小程序页面时在adbshell下的进程清单如下:

启动欢乐送小程序后的进程清单如下,会发现和刚启动微信的进程清单一致,说明刚进入微信会加载小程序相关内容(只是此时的top进程是com.tencent.mm):

进入小程序页面后的进程清单如下,由进程号得知当前的top进程为com.tencent.mm:tools(可简写为tools);

从上图发现appbrand0、tools是进入到小程序后新增的进程,且在进入小程序页面后当前正在运行的进程是tools,对应chromeOptions中的值。

3、webview调试利器---chrome-inspector(较好的查看webview页面元素)

其URL:chrome://inspect/#devices。能识别手机上打开的webview页面。是否每个入口的小程序都能在chrome_inspector上查看对应的界面呢?遇到过两种情形:

(1)(2018.6.22~至今)只能查看搜一搜入口的小程序(从chrome-inspector上显示的搜一搜url试出来的)

(2)(2018.6.22之前)所有入口均能显示小程序页面的url(下拉小程序;搜一搜;微信钱包)

建议:从执行case的稳定性考虑,推荐使用从搜一搜进入到小程序页面

基于APPIUM的小程序上下文切换

1、 切换到webview模式下的优点与缺点

看同一个安卓页面上的显示,分别用chrome_inspector和uiautomator显示

对比可以看出在chrome-inspector下页面元素显示的优势:

  • 能够覆盖更多的业务场景(比如上边右图可以轻松定位发布有奖,要用左图的话需要图像识别)
  • 维护量更小(图像识别需要对每个不同的设备的此页面都需要单独截一张图片,以保证能准确识别对应元素)

2、如何切换到对应元素所在的小程序页面

  • 切换到小程序页面:先切换到元素所在的context,然后切换到元素所在的handle中。元素所在的context对应前面获取到的当前页面的top进程名;handle的话需要你自己去遍历所有的handle,当此handle下的page_source包含你想要的元素,就是你所需要的handle(此处每个页面挑一个只能代表当前页面的元素,防止多个页面有相同元素)
  • 多个小程序页面之间来回切换:再次遍历所有的handle,切换到元素所在的handle中

然后有的人会说,我照着你这篇教程做了,但是仍然没有切换成功。

3、不是所有的设备都能切换成功的(可能appium框架里有bug)

Chromedriver与webview版本对应关系(这个很重要)的链接:https://github.com/appium/appium/blob/master/docs/en/writing-running-appium/web/chromedriver.md

第一种情形:设备自身的android system webview版本比微信里的webview版本高。

安卓设备自带的android system webview版本(59)高于57(微信里的webview版本与tbs版本号有关,目前我们的微信基本都是最新的):

只存放chromedriver2.28和2.29时(chromedriver的存放位置在“小程序自动化的搭建---小程序中chromedriver的存放”中可以清晰看到),切换成功。

只存放2.28、2.29、2.30时,切换会报错。

第二种情形:设备自身的webview版本比微信里的低。

安卓设备自带的webview版本(47)低于57(微信里的webview版本):

只存放2.28和2.29时,切换会报错。

只存放2.28、2.29、2.21时,切换会报错。

所以设备低的可能需要自己尝试去改源码。

第三种情形:设备自身的webview版本与微信里的一致。

小伙伴们,快拿起你的androidsystem webview57版本的手机跑个小程序自动化吧(应该成功)。

小程序自动化的搭建

原则:与端内native、webview保持一致,易维护,易编写case。

1、Case的存放

存放在一个单独的小程序的testsuit里

2、 element的编写

小程序中的元素添加1个key(mini_program),与端内保持一致。

3、小程序中chromedriver的存放

与端内webview保持一致(放在框架里能在不同执行机上更方便地同时执行不同的设备)。

4、appium配置参数

这里值得一提的是chromedriverExecutableDir参数(需要appium版本在1.8及以上才能使用),那么在1.8以下版本呢?(也不需要你做处理,在初始化过程中我会去拿你执行机上的appium版本,系统的webview版本,然后配置对应的参数)

5、执行机环境的兼容

Uiautomator2及appium输入法的兼容(目前执行机上安装了不同版本的Uiautomator2、appium输入法的包)。

6、执行

支持命令行参数执行,参数用-w或--wechat。

7、小程序初始化

为了使用上的方便和节省不必要的操作,在执行小程序case时会自动关闭调用端内混淆包的文件和执行端内的预操作。

8、小程序页面基本操作

元素是否存在、点击、滑动、中英文输入、小程序页面来回切换。

未来

1、对于ios端的小程序的自动化,能有一个可行的方案。(目前可以反编译微信的包来做,但易封号)。

2、大家都能更方便的编写、调试、执行case,查看执行结果。

- To Be Continued -

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-11-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 测试开发社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档