专栏首页python爱好部落自动化测试微信小程序

自动化测试微信小程序

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

微信小程序是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

然后:在打开的界面中选择信息->勾选是否打开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来定位元素吧。

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爱好部落(lovesweet2018),作者:Snake

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-09-21

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 时间都去哪儿了--python性能优化

    当自动化测试的量特别大的时候,python性能就显得尤为重要。 往往高手和菜鸟的区别在性能上体现出来了。

    赵云龙龙
  • 实现接口的契约测试

    在当前微服务和前后端分离大行其道的行业背景下,越来越多的团队采用了前后端分离和微服务的架构风格。 A团队开发某服务并提供对应API服务,B团队是A团队的使用者调...

    赵云龙龙
  • 实现流量回放

    从https://github.com/buger/gor/releases下载最新的 Gor 二进制文件(我们为 Windows、Linux x64 和 Ma...

    赵云龙龙
  • 便捷访问Google学术

    本文介绍插件助手之目的仅是为了方便大家学术查阅之用,请大家不要使用该插件助手搜索查阅触犯国家法律法规以及任何与政治相关的内容。使用插件助手可能造成的任何风险由使...

    matlab爱好者
  • Android Studio 3.0 新功能全面解析和旧项目适配问题

    Android Studio是Android的官方IDE。它是专为Android而打造,可以加快您的开发速度,帮助您为每款Android设备构建最优应用。

    砸漏
  • Spark MLlib 算法系列之 FM

    Spark之所以在机器学习方面具有得天独厚的优势,有以下几点原因:

    fisherman
  • 丰田和谷歌都要仰仗的自动驾驶霸主

    来源:日经技术在线 丰田VS谷歌——随着自动驾驶实用化的临近,这场不同行业之间的对决成为了关注的焦点。在这场对决的背后,有一家汽车零部件厂商异军突起,成为自动驾...

    新智元
  • Spark MLlib 算法系列之 LR

    Spark之所以在机器学习方面具有得天独厚的优势,有以下几点原因:

    fisherman
  • 【npm】伙计,给我来一杯package.json!不加糖

    前言:夜深了,我熬了一锅热气腾腾的package.json,给大家端上来,希望大家喜欢 json和JS对象的区别 package.json,顾名思义,它是一个j...

    外婆的彭湖湾
  • Appium移动端自动化测试--搭建模拟器和真机环境

    推荐直接安装Android Studio,然后使用Android Studio安装SDK。 启动SDK Manager,安装自己所需要的版本,下载安装即可。

    软测小生

扫码关注云+社区

领取腾讯云代金券