树莓派搭建UI自动化环境

2022-03-24 16:08:05 浏览数 (1)

前言

如果大家对于移动端UI自动化比较了解的话,都应该知道几个主流框架,Appium、Airtest、Macaca.这些框架都有一个共同点,必须手机插在电脑上.当然有些也可以使用WIFI连接电脑,但是目前使用USB方式连接电脑是最稳定的.

我们公司跑自动化是macpro笔记本,插上这种USB转接头,一个USB大概能带3到4台机器.如果太多了以后,就会出现USB供电不足的情况,手机不在充电状态.

image

其实当时看了一些解决方案,使用有独立供电的USB HUB,但是公司采购申请不下.

image

另外的方案就是现在的多节点运行,Android和iOS分布在两台jenkins节点中运行,降低单台电脑的功耗.但是如果以后测试设备增加的话,这个方案成本太大.

有幸之前了解过"树莓派"也是可以运行Linux系统,只要是Linux系统,理论上就可以安装adb、appium等软件.

另外"树莓派"虽然体积小,但是功耗低并且价格便宜.如果使用"树莓派"作为自动化节点机,分布式执行自动化测试的方案应该是可行的.

关于树莓派

请阅读树莓派入门这篇文章,先对树莓派有一定的了解.

环境准备

安装node

如下这种方式,是一键命令行安装,非常简单

代码语言:javascript复制
curl -sL https://deb.nodesource.com/setup_11.x | sudo -E bash -

sudo apt-get install -y nodejs

设置npm淘宝镜像

设置淘宝镜像,目的是提升下载安装速速

代码语言:javascript复制
npm install -g cnpm --registry=https://registry.npm.taobao.org

npm config set registry https://registry.npm.taobao.org

python3

使用python3来执行脚本

代码语言:javascript复制
sudo apt-get install python3

安装lrzszp

Liunx上传和下载文件命令行工具

代码语言:javascript复制
sudo apt-get install lrzsz

adb

我们这次是运行的Android自动化测试,自动化框架在底层都会调用adb工具.

由于安装的树莓派是arm32位,直接下载的adb是不能用,找一个32位的adb二进制文件.

代码语言:javascript复制
https://github.com/NetEaseGame/AutomatorX/releases/tag/1.0.12

image

赋予权限

代码语言:javascript复制
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

android环境

下载Linux平台的sdk

代码语言:javascript复制
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

解决方法:

代码语言:javascript复制
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

再执行如下命令,就可以更新相关工具包了

代码语言:javascript复制
tools/android update sdk --no-ui

image

appium

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

代码语言:javascript复制

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

)

安装appium-doctor来检查环境

代码语言:javascript复制
npm install appium-doctor -g

脚本代码

脚本代码是基于python3写的,就是启动app就可以了,主要是验证appium是否可以运行成功.

源码地址:

代码语言:javascript复制
https://github.com/xinxi1990/python_appium_demo.git

jenkins

master机器

jenkins分为master机器和slave机器.

准备在我的mac笔记本作为master机器,使用war包启动即可.

代码语言:javascript复制
java -jar /usr/local/Cellar/jenkins/2.186/libexec/jenkins.war

设置jenkins url地址,默认的是127.0.0.1

image

slave机器

slave机器也就是树莓派机器,也是使用jar包启动.

image

启动节点命令:

代码语言:javascript复制
java -jar agent.jar -jnlpUrl http://192.168.1.104:8080/computer/raspberrypi/slave-agent.jnlp -secret ed2d0877fd55d575f58cfa0fc9d5b8c97b76d2caaa928dc0af859e9307586f37

image

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

image

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

image

image

脚本运行

命令行执行

代码语言:javascript复制
git clone https://github.com/xinxi1990/python_appium_demo.git

cd python_appium_demo & python3 run.py

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

image

提示zipalign执行有问题,单个执行zipalign工具的确有问题.可能是sdk下载版本和系统不兼容.

解决方案如下:

代码语言:javascript复制
sudo apt-get install zipalign

which zipalign

cp /usr/bin/zipalign /usr/local/Android-SDK/platform-tools

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

image

jenkins创建任务

在jenkins上创建任务,在树莓派上运行.

image

image

jenkins配置多个任务达到并发执行效果

image

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

image

并发任务配置

image

构建队列中有两个任务

image

结语

经过一番折腾,树莓派的确是可以跑自动化测试,但是我用树莓派3B内存仅1G,如果真想玩的话,建议入手树莓派4B性能和内存都有所提升.

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

0 人点赞