欢迎光临
我们一直在努力

自动化测试微信小程序

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

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

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

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

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

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

npm --registry [http://registry.npm.taobao.org](http://registry.npm.taobao.org/) install -g appium

4 查看版本号

appium -v

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

npm --registry http://registry.npm.taobao.org update -g appium

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

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,推荐)

pip install --index-url=http://pypi.python.org/simple/ --trusted-host pypi.python.org Appium-Python-Client

6 检查appium:

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下时,需要用“:”(英文的冒号)隔开。
例如:

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文件中输入 :

export  ANDROID_HOME=/android sdk所在目录/
export JAVA_HOME=/java_home的地址/

例如:

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

自动化测试微信小程序 小程序营销 第1张


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

自动化测试微信小程序 小程序营销 第2张

手机通过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来定位元素吧。

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东后,看下当前运行在哪个进程中。

adb shell dumpsys activity top | grep ACTIVITY
adb shell ps XXX

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

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的切换比较简单:

webview界面:
print(driver.contexts)
driver.switch_to.context(输入待测试webview名字))

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

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

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

更多精彩,请关注微信公众号:python爱好部落

赞(0) 打赏
未经允许不得转载:小程序营销 » 自动化测试微信小程序
分享到: 更多 (0)

小程序营销

联系我们联系我们