前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >自动化测试微信小程序

自动化测试微信小程序

作者头像
赵云龙龙
发布2019-09-25 14:26:02
2.7K0
发布2019-09-25 14:26:02
举报
文章被收录于专栏:python爱好部落python爱好部落

小程序已经成为一个大的入口了,在测试中如何自动化测试小程序呢?

微信小程序是webview的,跟其它的hybrid的程序测试起来没什么区别。

Mac 环境下搭建 appium 1 安装homebrew 首先命令行检查是否安装:

代码语言:javascript
复制
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

如果mac没有安装homebrew的话,需要先安装homebrew:

代码语言:javascript
复制
curl -LsSf http://github.com/mxcl/homebrew/tarball/master | tar xvz -C/usr/local --strip 1

查看homebrew版本:brew -v 2 安装node(安装nodejs后,npm会自动安装好) 使用homebrew安装node,命令行:brew install node 查看node版本: node -v 3 安装 appium server

代码语言:javascript
复制
npm --registry [http://registry.npm.taobao.org](http://registry.npm.taobao.org/) install -g appium

4 查看版本号

代码语言:javascript
复制
appium -v

如果长期没有更新,可以用如下命令更新一下:

代码语言:javascript
复制
npm --registry http://registry.npm.taobao.org update -g appium

注意: 使用sudo安装appium时能够安装,但是运行不起来,解决方案如下:

代码语言:javascript
复制
sudo npm uninstall appium -g  //卸载appium
sudo chmod -R 777 /usr/local   //权限就放开
npm install -g appium  //重新安装

5 安装 appium client

命令行中输入:npm install wd

因为被墙,wd下载不下来

尝试使用:npm --registry [http://registry.npm.taobao.org](http://registry.npm.taobao.org/) install -g wd

Install python_client(如果用python,推荐)

代码语言:javascript
复制
pip install --index-url=http://pypi.python.org/simple/ --trusted-host pypi.python.org Appium-Python-Client

6 检查appium:

代码语言:javascript
复制
npm --registry http://registry.npm.taobao.org install appium-doctor -g
appium-doctor

注意,可能node镜像下载很慢,可以换不同的镜像源来尝试

7 安装android sdk(如果有Android环境,此步骤可省略)

去android的官方网站下载ADT工具

http://developer.android.com/sdk/index.html

下载程序后,解压到Mac电脑的任意一个目录即可。无需任何安装操作。

进入到android-sdk-macoxs下的Tools文件夹,双击Android文件。即可启动Android SDK Manager。

因为,Android SDK Manager需要有Java的支持,如果没有安装java,则第一次在双击Andriod文件的时候,会提示下载安装java。

可以在Android SDK Manager中下载和更新 Android SDK Tools 和 Android SDK Platform-tools 。

adb调试工具一般位于Platform-tools下。

8 配置adb使用

在Mac系统中,很多时候第一次在Android SDK中使用adb的时候。无法使用。会提示-bash: abd: command not found。

造成此类现象的原因是:未配置Android的环境变量。因此,您需为Mac中的Android SDK配置环境变量。

启动Mac自带的终端Terminal,进入当前用户的home目录。

命令行中输入:echo $HOME

创建.bash_profile文件:

命令行中输入:touch .bash_profile

打开.bash_profile文件:

命令行中输入:open -e .bash_profile 此命令行输入完毕后,会自动弹出 .bash_profile 文件的编辑窗口

在.bash_profile文件中输入 export PATH=/Users/您的用户名/文件路径/platform-tools/:$PATH

注意:如果需要添加多个路径到PATH下时,需要用“:”(英文的冒号)隔开。 例如:

代码语言:javascript
复制
export PATH=${PATH}:/Users/csl/android-sdk-macosx/platform-tools:/Users/csl/android-sdk-macosx/tools

保存文件。直接关闭.bash_profile文件,即可自动保存您输入的内容。

更新刚配置的环境变量

命令行中输入:source .bash_profile

9 验证配置是否成功

输入adb,如果没有出现-bash: adb: command not found;而出现adb的命令参数解释。则表明环境变量配置成功

进行ANDROID_HOME参数的设置 启动Mac自带的终端Terminal,进入当前用户的home目录。 命令行中输入:open -e .bash_profile 在.bash_profile文件中输入 :

代码语言:javascript
复制
export  ANDROID_HOME=/android sdk所在目录/
export JAVA_HOME=/java_home的地址/

例如:

代码语言:javascript
复制
export  ANDROID_HOME=/Users/csl/android-sdk-macosx/
export JAVA_HOME=/Library/Java/JavaVirtrtualMachines/jdk1.8.0_73.jdk/Contents/Home/

注: 定位mac中 地址,可以使用工具命令“/usr/libexec/java_home”来定位JAVA_HOME

更新刚配置的环境变量 命令行中输入:source .bash_profile

再次执行环境监测命令,执行成功。

整体环境初步搭建完成,开始折腾小程序了。

由于腾讯系QQ、微信等都是基于腾讯自研X5内核,不是google原生webview(其实就是进行了二次定制)。实质上也是混合应用的一种,现在很多app产品也开始流行采用X5内核作为其内嵌web浏览服务,所以掌握X5内核混合应用自动化也是app自动化测试工程师必备技能。

genymotion、夜神等模拟器是intel的X86架构,很多app安装不了,比如微信、qq等(虽然说可以通过安装arm解释器来解决该问题,但是进行X5内核调试的话也会出现问题),建议最好是一台真实的手机来做。

X5内核应用自动化方式和普通混合应用有非常多的差异,接下来以微信小程序举例介绍怎么来开展X5内核的自动化。 打开微信,在任意好友窗口输入,然后点击它:debugx5.qq.com

然后:在打开的界面中选择信息->勾选是否打开TBS内核Inspector调试功能

手机通过usb连接到电脑,打开USB调试模式,通过adb devices命令检测到设备 然后微信中打开一个要测的小程序 在电脑的在chrome浏览器里面输入chrome://inspect#devices 然而,检测不到WebView,没有Inspect链接,打开本地缓存的页面,也是空白的。 网上搜搜,很多这样的问题, 对于国内的程序猿来说,由于无法访问 https://chrome-devtools-frontend.appspot.com,只能出现空白页面,某宝上竟然有人卖Android webview的调试工具解决方案。

好吧,直接去 /users/用户/Library/Android/sdk/tools/ 下去找 uiautomatorviewer, 启动起来结果报错。

用appium desktop吧,结果发现官网都打不开,哎!

那就用macaca来定位元素吧。

代码语言:javascript
复制
npm i macaca-android -g --registry http://registry.npm.taobao.org

npm install macaca-cli -g --registry http://registry.npm.taobao.org

npm install app-inspector -g --registry http://registry.npm.taobao.org

app-inspector -u YOUR-DEVICE-ID

装完以后,发现有问题,没有时间纠结这个问题。 微信有很多的进程,每一个小程序都运行在不同的进程中。 进入X东后,看下当前运行在哪个进程中。

代码语言:javascript
复制
adb shell dumpsys activity top | grep ACTIVITY
adb shell ps XXX

最后就是蒙了一个,全用xpath写个demo 测试:

代码语言:javascript
复制
import time
from appium import webdriver

desired_caps = {
            'platformName': 'Android',
            'fastReset': False,
            'deviceName': 'COL-AL10',
            'appPackage': 'com.tencent.mm',
            'appActivity': '.ui.LauncherUI',
            'fullReset': False,
            'noReset': True,
            'unicodeKeyboard': True,
            'resetKeyboard': True,
            'chromeOptions': {
                'androidProcess': 'com.tencent.mm:appbrand0'
                }
            }
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
time.sleep(10)
driver.find_element_by_xpath("//*[@text='发现']").click()
driver.find_element_by_xpath("//*[@text='小程序']").click()
driver.find_element_by_xpath("//*[contains(@text, '京东购物')]").click()
driver.switch_to.context('WEBVIEW_com.tencent.mm:appbrand0')
time.sleep(5)
print(driver.page_source)

结果还正常,没有做gif.

我们知道,常规的webview与native的切换比较简单:

代码语言:javascript
复制
webview界面:
print(driver.contexts)
driver.switch_to.context(输入待测试webview名字))

native界面:
driver.switch_to.content(输入待测试native界面‘NATIVE_APP’)

微信小程序就是加了一个选项而已,把小程序进程放入了chrome options里面了。

个人觉得小程序的UI自动化测试,没有必要大张旗鼓。当然,为了领导开心,你可以扩大规模。

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

本文分享自 python爱好部落 微信公众号,前往查看

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

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

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