1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 微信html5测试工具 FAutoTest- 微信小程序 / 公众号 H5 自动化利器

微信html5测试工具 FAutoTest- 微信小程序 / 公众号 H5 自动化利器

时间:2022-04-14 11:35:24

相关推荐

微信html5测试工具 FAutoTest- 微信小程序 / 公众号 H5 自动化利器

X5 内核 H5 自动化背景

近来有很多童靴咨询如何做微信小程序/公众号等 H5 页面来做自动化,之前写了一篇文章微信小程序自动化测试实践

/yyoba/p/9455519.html/

其中的工具是用 appium 来做。但是微信小程序/公众号这种 H5 页面是用微信自家 X5 内核来渲染的,appium 对其支持的并不是非常理想,通过 ChromeOption 定制 X5 内核的进程运行时其稳定性不尽如人意,最近有关注到腾讯自家开源了专门做微信小程序/公众号 H5 页面自动化的框架,所以给各位小伙伴们唠叨唠叨。

FAutoTest

FAutoTest 是腾讯自家开发来做微信 H5 页面的自动测试框架,既然企鹅能将其开源,说明这个框架应该是经过其内部验证实践的。我们可以从 GitHub 上找到这个开源项目地址

/Tencent/FAutoTest/

框架的介绍和使用需要的环境官方网址已经介绍的非常详细了(对于英文犯晕的同学友好度 max),这里就不多做介绍。

还要再重点强调一遍,必须要打开微信的内核 debug 模式,怎么打开可以参考我之前的微信小程序自动化测试实践这篇 blog。

之前是写的微信小程序实践,那这篇就拿公众号来试下水。

FAutoTest 实践

工具选型

官方有对其介绍:框架内打包了 Python 版本的 UIAutomator,方便在安卓 Native 页面进行操作。所以在工具选型上面直接抛弃了 appium,一来 appium 运行速度慢,需要进行大量的初始化操作,二来本身 appium 就是基于 UIAutomator,何不就用 python 版的 UIAutomator 呢(感谢国内前辈贺晓聪大神的的框架,对 python 版封装的很优秀),有兴趣的同学可以去观摩下:/xiaocong/uiautomator/

页面元素定位

打开微信,通过 uiautomatorview.bat 工具定位到元素信息

打开微信公众号,通过 chrome:inspect 探测 Web 页面的元素

以柠檬班软件测试公众号举例:测试流程经过的元素信息

通讯录 text 定位

公众号 text 定位

柠檬班软件测试 需要先滑动至柠檬班软件测试,再去点击

粉丝福利 text 定位

Java 自动化 text 定位

咨询按钮 xpath 定位://*[@id="js-bottom"]/div[2]/div[1]/button

咨询输入框 xpath 定位://*[@id="js-input"]

发送按钮 xpath 定位://*[@id="js-btn-send"]

自动化脚本编写

先手动开启对应的 H5 页面,来看下 FAutoTest 是否能完成 H5 页面的自动化测试,代码如下:

#初始化driver

h5Driver = H5Driver()

h5Driver.initDriver()

#点击咨询按钮

h5Driver.clickElementByXpath('//*[@id="js-bottom"]/div[2]/div[1]/button')

#点击输入框

h5Driver.clickElementByXpath('//*[@id="js-input"]')

h5Driver.textElementByXpath('//*[@id="js-input"]','how much')

#点击发送

h5Driver.clickElementByXpath('//*[@id="js-btn-send"]')

h5Driver.close()

嗯,一切正常,接下来上 native 原生页面代码,以及 unitest 用例管理

# coding=utf-8

from fastAutoTest.core.h5.h5Engine import H5Driver

import unittest

import os

from uiautomator import Device

from time import sleep

class wechatPublicTest(unittest.TestCase):

@classmethod

def setUpClass(self):

#使用adb命令调起微信

cmd = 'adb shell am start com.tencent.mm/com.tencent.mm.ui.LauncherUI'

os.system(cmd)

#对应设备的deviceName

androidDriver = Device('ZX1G225X2G')

print androidDriver.info

self.driver=androidDriver

#休眠一下,等待微信主页面加载完毕

sleep(5)

#微信原生界面流程测试,用uiautomator框架

def test_public_native(self):

#找到微信主页面的“通讯录” 并点击

self.driver(text='通讯录').click()

#点击公众号

self.driver(text='公众号').click()

#上下滑动去找柠檬班软件测试公众号

self.driver(scrollable=True).scroll.to(text="柠檬班软件测试")

self.driver(text='柠檬班软件测试').click()

self.driver(text='粉丝福利').click()

#选择java自动化

self.driver(text='java自动化').click()

sleep(5)

#微信公众号H5部分测试,用到FAutoTest框架

def test_public_we_h5(self):

#初始化driver

h5Driver = H5Driver()

h5Driver.initDriver()

#点击咨询按钮

h5Driver.clickElementByXpath('//*[@id="js-bottom"]/div[2]/div[1]/button')

#点击输入框

h5Driver.clickElementByXpath('//*[@id="js-input"]')

h5Driver.textElementByXpath('//*[@id="js-input"]','how much')

#点击发送

h5Driver.clickElementByXpath('//*[@id="js-btn-send"]')

h5Driver.close()

@classmethod

def tearDownClass(self):

#测试用例运行结束关闭应用

cmd = 'adb shell am force-stop com.tencent.mm'

os.system(cmd)

if __name__ == '__main__':

unittest.main()

运行效果

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。