前言
如果你对移动端UI自动化有一定的了解,那么应该知道主流框架如Appium、Airtest和Macaca。这些框架的一个共同特点是需要将手机连接到电脑上。当然,也有一些可以使用WIFI连接,但目前通过USB连接电脑是最稳定的方法。
我们公司使用macpro笔记本进行自动化测试,通过USB转接头连接,每个USB端口大约可以支持3到4台设备。然而,如果连接的设备过多,可能会出现USB供电不足的情况,导致手机无法充电。
image
我们曾考虑过一些解决方案,例如使用带独立供电的USB HUB,但公司的采购申请未能通过。
image
另一个方案是采用多节点运行,将Android和iOS分别在两台Jenkins节点上运行,以降低单台电脑的功耗。但如果测试设备增加,这种方案的成本会变得很高。
幸运的是,我之前了解到“树莓派”也可以运行Linux系统,而Linux系统理论上可以安装adb、Appium等软件。
“树莓派”虽然体积小,但功耗低且价格便宜。如果使用“树莓派”作为自动化节点机,分布式执行自动化测试的方案是可行的。
关于树莓派,请阅读树莓派入门这篇文章,以对其有一定的了解。
环境准备
安装Node.js的步骤如下,这是一种一键命令行安装,非常简单:
curl -sL https://deb.nodesource.com/setup_11.x | sudo -E bash - sudo apt-get install -y nodejs
设置npm的淘宝镜像,以提升下载和安装速度:
npm install -g cnpm --registry=https://registry.npm.taobao.org npm config set registry https://registry.npm.taobao.org
使用Python3来执行脚本:
sudo apt-get install python3
安装lrzsz,这是一个用于Linux上传和下载文件的命令行工具:
sudo apt-get install lrzsz
我们这次运行的是Android自动化测试,自动化框架在底层都会调用adb工具。由于安装的树莓派是arm32位,直接下载的adb无法使用,需要找一个32位的adb二进制文件。
https://github.com/NetEaseGame/AutomatorX/releases/tag/1.0.12
image
赋予adb权限:
mv /usr/local/bin sudo chown root:root /usr/local/bin/adb sudo chmod 0755 /usr/local/bin/adb sudo chmod +s /usr/local/bin/adb
下载适用于Linux平台的Android SDK:
wget http://dl.google.com/android/android-sdk_r24.2-linux.tgz tar -zxvf android-sdk_r24.2-linux.tgz mv android-sdk-linux /usr/local/Android-SDK tools/android update sdk --no-ui
在更新过程中,可能会遇到找不到swt.jar的问题,这个jar包是一个图形化界面库。
image
image
image
解决方法如下:
sudo apt install libswt-gtk-3-java https://packages.debian.org/stretch/armhf/libswt-gtk-3-jni/download /usr/share/java cp swt-gtk-3.8.jar /usr/local/Android-SDK/tools/lib/arm cp swt.jar /usr/local/Android-SDK/tools/lib/arm
再执行如下命令,就可以更新相关工具包了:
tools/android update sdk --no-ui
image
安装Appium时,如果不需要chromedriver,可以通过命令行跳过:
sudo npm install appium --chromedriver-skip-install --registry=https://registry.npm.taobao.org
)
安装Appium-Doctor来检查环境:
npm install appium-doctor -g
脚本代码是基于Python3编写的,主要目的是验证Appium是否可以成功运行。
源码地址:
https://github.com/xinxi1990/python_appium_demo.git
Jenkins分为master机器和slave机器。
准备在我的Mac笔记本上作为master机器,使用WAR包启动即可:
java -jar /usr/local/Cellar/jenkins/2.186/libexec/jenkins.war
设置Jenkins URL地址,默认的是127.0.0.1。
image
Slave机器也就是树莓派机器,也使用jar包启动。
image
启动节点命令如下:
java -jar agent.jar -jnlpUrl http://192.168.1.104:8080/computer/raspberrypi/slave-agent.jnlp -secret ed2d0877fd55d575f58cfa0fc9d5b8c97b76d2caaa928dc0af859e9307586f37
image
启动完成后,可以看到slave节点已经成功连接。
image
关于slave节点的功耗,可以看出还有一些剩余内存。
image
image
脚本运行命令行执行:
git clone https://github.com/xinxi1990/python_appium_demo.git cd python_appium_demo & python3 run.py
在通过脚本执行后,出现如下问题:
image
提示zipalign执行有问题,单独执行zipalign工具的确有问题,可能是SDK下载版本与系统不兼容。
解决方案如下:
sudo apt-get install zipalign which zipalign cp /usr/bin/zipalign /usr/local/Android-SDK/platform-tools
再执行脚本运行成功,到此证明树莓派的确可以执行自动化脚本。
image
在Jenkins上创建任务,在树莓派上运行。
image
image
在Jenkins上配置多个任务,以达到并发执行的效果。
image
并发任务配置触发下游任务,完成并发执行。
image
并发任务配置。
image
构建队列中有两个任务。
image
结语
经过一番折腾,树莓派确实可以运行自动化测试。不过我使用的是树莓派3B,内存仅有1G,如果真想玩的话,建议入手树莓派4B,其性能和内存都有所提升。
下次将继续介绍在树莓派上搭建个人博客,敬请关注。
以上就是树莓派搭建UI自动化环境的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号