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

发布于 更新于
本文目录
  1. 背景
  2. 服务器安装
  3. 查找镜像
  4. 配置加速器
  5. 拉取镜像
  6. 启动容器
  7. 查看运行状态的容器
  8. 安装jdk
  9. 安装adb
  10. 模拟器设置
  11. 更改连接方式
  12. 更改桥接
  13. docker连接模拟器
  14. 参考文章

技术文章自动化测试

在平时的app自动化测试中,如果要做兼容性测试,开的appium server一多,电脑容易卡,这时候可以考虑将appium server迁移到docker中,利用docker创建多个appium server的容器,通过tcpip的形式将

背景

在平时的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 命令》

来源:testingpai

继续阅读