pilipala195

我们必将更加深邃,否则更加复杂。

pilipala195's avatar pilipala195

基于Docker配置Appium实践

基于Docker配置Appium实践

背景

​公司常年闲置一台主机,之前装了 Ubuntu 16.04 Desktop,上面的环境基本配置完毕,但在运行Appium时偶尔会出现无法找到SDK的情况。前段时间在搭建STF时已经领略到Docker部署的方便,加上访问这台主机的主要方法是在Mac上ssh,桌面版实在对我没什么用,索性卸载重装 Ubuntu 16.04 Server + Docker,并且尽量将所需服务用Docker搭建。(Docker对于软件洁癖实在太友好了

搭建过程

​安装 Ubuntu Server 略去不说,重点记录下Docker搭建Appium的过程。

  • Docker 目前分为 CE(社区版)和 EE(商业版),EE 相比 CE 最大的优势便是安全性全方位升级,当然也需要付费。于是我选择安装 CE,具体操作步骤跟着 get Docker for Ubuntu 走就好。
  • Docker安装完毕后,命令行输入sudo docker -v,出现版本信息。
  • 每次执行Docker均需要管理员权限颇为麻烦,可以执行以下命令,将当前用户加入Docker用户组,重启电脑后之后只需要输入docker run,无需管理员权限。
1
2
3
4
5
$ sudo groupadd docker
# 将用户加入该group内。然后退出并重新登录即可生效。
$ sudo gpasswd -a ${USER} docker
# 重启Docker服务
$ sudo service docker restart
  • Appium官方已提供打包好的镜像,看了Dockerfile里面除了Appium版本较低,其他均满足需求。
1
2
3
4
5
6
7
8
# 登录Docker个人账号
$ docker login
# 拉取Appium镜像
$ docker pull appium/appium
# 运行Appium
$ docker run --privileged -d -p 4723:4723 -v /dev/bus/usb:/dev/bus/usb --name container-appium appium/appium
# 验证Appium
$ docker exec -it container-appium adb devices
  • 上一步中adb devices正常显示设备信息后,Appium已搭载完毕,接下来运行Appium脚本即可。

Tips

  • 基于目前国内堪忧的网络环境,最好去 DaoCloud 申请一个Docker加速,不然pull image的过程是十分痛苦的。
  • 官方提供的镜像仅支持了Appium的基本运行,后期可以考虑基于此镜像进行优化,比如将执行脚本打包在镜像中、配置python环境…
  • 运行的Appium脚本中有在命令行adb的操作,现在adb service在Docker中,需在命令前添加docker exec -it container-appium,如
    docker exec -it container-appium adb -s ZX1G42CT5K shell input keyevent 26

总结

  • 遥想当初刚接触Appium时,花费将近一周的时间配置环境,如今通过Docker,仅需十余行命令便可部署完毕,不得不说Docker的效率和普适性确实一流。
  • 这次实践仅仅是对Docker化Appium最基础的搭建,后面优化镜像、多镜像多机测试等工作还有很长路要走。
  • 感谢Docker,软件洁癖者最大的福音。