0

0

树莓派搭建UI自动化环境

星夢妙者

星夢妙者

发布时间:2025-07-12 10:22:35

|

779人浏览过

|

来源于php中文网

原创

前言

如果你对移动端UI自动化有一定的了解,那么应该知道主流框架如Appium、Airtest和Macaca。这些框架的一个共同特点是需要将手机连接到电脑上。当然,也有一些可以使用WIFI连接,但目前通过USB连接电脑是最稳定的方法。

我们公司使用macpro笔记本进行自动化测试,通过USB转接头连接,每个USB端口大约可以支持3到4台设备。然而,如果连接的设备过多,可能会出现USB供电不足的情况,导致手机无法充电。

树莓派搭建UI自动化环境image

我们曾考虑过一些解决方案,例如使用带独立供电的USB HUB,但公司的采购申请未能通过。

树莓派搭建UI自动化环境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

树莓派搭建UI自动化环境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包是一个图形化界面库。

树莓派搭建UI自动化环境image

树莓派搭建UI自动化环境image

树莓派搭建UI自动化环境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

树莓派搭建UI自动化环境image

安装Appium时,如果不需要chromedriver,可以通过命令行跳过:

sudo npm install appium --chromedriver-skip-install --registry=https://registry.npm.taobao.org

树莓派搭建UI自动化环境)

安装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。

ProcessOn
ProcessOn

免费在线流程图思维导图,专业强大的作图工具,支持多人实时在线协作

下载

树莓派搭建UI自动化环境image

Slave机器也就是树莓派机器,也使用jar包启动。

树莓派搭建UI自动化环境image

启动节点命令如下:

java -jar agent.jar -jnlpUrl http://192.168.1.104:8080/computer/raspberrypi/slave-agent.jnlp -secret ed2d0877fd55d575f58cfa0fc9d5b8c97b76d2caaa928dc0af859e9307586f37

树莓派搭建UI自动化环境image

启动完成后,可以看到slave节点已经成功连接。

树莓派搭建UI自动化环境image

关于slave节点的功耗,可以看出还有一些剩余内存。

树莓派搭建UI自动化环境image

树莓派搭建UI自动化环境image

脚本运行命令行执行:

git clone https://github.com/xinxi1990/python_appium_demo.git
cd python_appium_demo & python3 run.py

在通过脚本执行后,出现如下问题:

树莓派搭建UI自动化环境image

提示zipalign执行有问题,单独执行zipalign工具的确有问题,可能是SDK下载版本与系统不兼容。

解决方案如下:

sudo apt-get install zipalign
which zipalign
cp /usr/bin/zipalign /usr/local/Android-SDK/platform-tools

再执行脚本运行成功,到此证明树莓派的确可以执行自动化脚本。

树莓派搭建UI自动化环境image

在Jenkins上创建任务,在树莓派上运行。

树莓派搭建UI自动化环境image

树莓派搭建UI自动化环境image

在Jenkins上配置多个任务,以达到并发执行的效果。

树莓派搭建UI自动化环境image

并发任务配置触发下游任务,完成并发执行。

树莓派搭建UI自动化环境image

并发任务配置。

树莓派搭建UI自动化环境image

构建队列中有两个任务。

树莓派搭建UI自动化环境image

结语

树莓派搭建UI自动化环境经过一番折腾,树莓派确实可以运行自动化测试。不过我使用的是树莓派3B,内存仅有1G,如果真想玩的话,建议入手树莓派4B,其性能和内存都有所提升。

下次将继续介绍在树莓派上搭建个人博客,敬请关注。

相关专题

更多
什么是分布式
什么是分布式

分布式是一种计算和数据处理的方式,将计算任务或数据分散到多个计算机或节点中进行处理。本专题为大家提供分布式相关的文章、下载、课程内容,供大家免费下载体验。

320

2023.08.11

分布式和微服务的区别
分布式和微服务的区别

分布式和微服务的区别在定义和概念、设计思想、粒度和复杂性、服务边界和自治性、技术栈和部署方式等。本专题为大家提供分布式和微服务相关的文章、下载、课程内容,供大家免费下载体验。

229

2023.10.07

js正则表达式
js正则表达式

php中文网为大家提供各种js正则表达式语法大全以及各种js正则表达式使用的方法,还有更多js正则表达式的相关文章、相关下载、相关课程,供大家免费下载体验。

508

2023.06.20

js获取当前时间
js获取当前时间

JS全称JavaScript,是一种具有函数优先的轻量级,解释型或即时编译型的编程语言;它是一种属于网络的高级脚本语言,主要用于Web,常用来为网页添加各式各样的动态功能。js怎么获取当前时间呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

241

2023.07.28

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

252

2023.08.03

js是什么意思
js是什么意思

JS是JavaScript的缩写,它是一种广泛应用于网页开发的脚本语言。JavaScript是一种解释性的、基于对象和事件驱动的编程语言,通常用于为网页增加交互性和动态性。它可以在网页上实现复杂的功能和效果,如表单验证、页面元素操作、动画效果、数据交互等。

5234

2023.08.17

js删除节点的方法
js删除节点的方法

js删除节点的方法有:1、removeChild()方法,用于从父节点中移除指定的子节点,它需要两个参数,第一个参数是要删除的子节点,第二个参数是父节点;2、parentNode.removeChild()方法,可以直接通过父节点调用来删除子节点;3、remove()方法,可以直接删除节点,而无需指定父节点;4、innerHTML属性,用于删除节点的内容。

470

2023.09.01

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

206

2023.09.04

php源码安装教程大全
php源码安装教程大全

本专题整合了php源码安装教程,阅读专题下面的文章了解更多详细内容。

177

2025.12.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 6.5万人学习

Git 教程
Git 教程

共21课时 | 2.4万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号