基于 docker 容器并行执行 app 自动化:创建 appium 容器 (一)

本贴最后更新于 1617 天前,其中的信息可能已经事过景迁

背景

在平时的app自动化测试中,如果要做兼容性测试,开的appium server一多,电脑容易卡,这时候可以考虑将appium server迁移到docker中,利用docker创建多个appium server的容器,通过tcpip的形式将服务器上的appium server和本地的模拟器连接起来。运行完成之后从服务器下载测试报告即可。根据这一思路,经过一番实践,将整体操作的步骤做一说明

服务器安装

服务器是Centos的话最好选用Centos7,安装步骤略

查找镜像

使用docker search命令可以搜索appium镜像

docker search appium

image.png

配置加速器

使用DaoCloud配置镜像加速器拉取appium真是慢的一批,最后配置了阿里云镜像加速器。配置阿里云加速请戳这里-->《CentOS下安装docker并使用阿里云镜像加速器》

拉取镜像

docker pull appium/appium

启动容器

启动appium容器,并将端口映射为4723,名称命名为appium_1

docker run --privileged -d -p 4723:4723 --name appium_1 appium/appium

# --privileged:使用该参数,容器内的root拥有真正的root权限,否则容器内的root只是外部的一个普通用户权限
# -d:以分离模式启动容器,分离模式指的是在后台运行,而前景模式指的是在前台运行。默认分离模式设置为False
# -p:指定要映射的ip和端口。支持的格式有:hostPort:containerPort,ip:hostPort:containerPort,ip::containerPort。这里用的是第一种:4723:4723,指的是将本地(centos7)的5000端口映射到容器的5000端口
# --name:为容器指定一个名字

image.png

查看运行状态的容器

docker ps

image.png

安装jdk

我的Centos7上已经安装好了jdk,如果没有安装的请戳这里-->《Centos7安装JDK8以及环境配置》

安装adb

没有安装的请戳这里-->《centos7安装adb》
image.png

模拟器设置

更改连接方式

将夜神模式其的usb连接方式更改为tcpip的方式

C:\Users\beck
λ adb devices
List of devices attached
127.0.0.1:62025 device

C:\Users\beck
λ adb -s 127.0.0.1:62025 tcpip 6666
restarting in TCP mode port: 6666

image.png

更改桥接

打开系统设置-->属性设置-->网络设置,勾选开启网络桥接模式,这时需要先装个插件,安装好后选择静态IP,由于我的模拟器是安装在windows系统上,windows系统ip为192.168.0.101,这里我设置为192.168.0.126,设置网关192.168.0.1,点击保存设置,重启模拟器
image.png
重启后,关闭WLAN,再打开,点击设置,查看ip地址,可以看到ip变为192.168.0.102
image.png
image.png
这里不知道是不是夜神模拟器的问题,桥接后ip并未改变过来,所以又重新把桥接的ip从192.168.0.126设置为192.168.0.102

docker连接模拟器

docker exec -it appium_1 adb connect 192.168.0.102:6666

# docker exec:在运行的容器中执行命令
# -i:即使没有附加也保持STDIN打开
# -t:分配一个伪终端

看到connected to 192.168.0.102:6666,说明已连接成功
image.png

参考文章

《「docker实战篇」python的docker-创建appium容器以及设置appium容器连接安卓模拟器(31)》

《Docker:Docker Appium 镜像连接夜安卓神模拟器,并处理 connection refused 异常》

《Docker exec 命令》

回帖
请输入回帖内容 ...