在Docker中安装安卓11、12+Appium【web端android】
Docker-Android是一个docker镜像,建立在与移动网站测试和安卓项目有关的一切。
仿真器--三星设备 | 仿真器--Nexus设备 | 真实设备 |
---|---|---|
目标
使用 appium为移动网站运行UI测试
用最新的构建工具构建Android项目并运行单元测试
使用不同的框架为Android应用程序运行UI测试 (appium, espresso, robotium, etc.)
运行猴子/压力测试
短信测试
与其他docker-android项目相比的优势
没有VNC,可以看到docker容器内发生的一切
不同设备/皮肤的仿真器,如三星Galaxy S6、LG Nexus 4、HTC Nexus One等。
连接到Selenium Grid的能力
能够通过使用adb connect从外部容器控制仿真器。
支持真实设备的屏幕镜像
能够在测试执行过程中录制视频以进行调试
与其他云解决方案集成,例如 Genymotion Cloud
开放源代码,更多功能即将推出
Docker图像列表
OS | Android | API | 浏览器 | 浏览器版本 | Chromedriver | 图像 |
---|---|---|---|---|---|---|
Linux | 6.0 | 23 | browser | 44.0 | 2.18 | budtmo/docker-android-x86-6.0 |
Linux | 7.0 | 24 | chrome | 51.0 | 2.23 | budtmo/docker-android-x86-7.0 |
Linux | 7.1.1 | 25 | chrome | 55.0 | 2.28 | budtmo/docker-android-x86-7.1.1 |
Linux | 8.0 | 26 | chrome | 58.0 | 2.31 | budtmo/docker-android-x86-8.0 |
Linux | 8.1 | 27 | chrome | 61.0 | 2.33 | budtmo/docker-android-x86-8.1 |
Linux | 9.0 | 28 | chrome | 66.0 | 2.40 | budtmo/docker-android-x86-9.0 |
Linux | 10.0 | 29 | chrome | 74.0 | 74.0.3729.6 | budtmo/docker-android-x86-10.0 |
Linux | 11.0 | 30 | chrome | 83.0 | 83.0.4103.39 | budtmo/docker-android-x86-11.0 |
Linux | 12.0 | 31 | chrome | 93.0 | 93.0.4577.15 | budtmo/docker-android-x86-12.0 |
All | - | - | - | - | - | budtmo/docker-android-real-device |
All | All | All | All | All | All | budtmo/docker-android-genymotion |
List of Devices
Type | Device Name |
---|---|
Phone | Samsung Galaxy S10 |
Phone | Samsung Galaxy S9 |
Phone | Samsung Galaxy S8 |
Phone | Samsung Galaxy S7 Edge |
Phone | Samsung Galaxy S7 |
Phone | Samsung Galaxy S6 |
Phone | Nexus 4 |
Phone | Nexus 5 |
Phone | Nexus One |
Phone | Nexus S |
Tablet | Nexus 7 |
要求
Docker已经安装在你的系统中。
快速启动
你的机器需要支持虚拟化。要检查它。
复制代码sudo apt install cpu-checker kvm-ok
运行Docker-Android
对于Linux操作系统,请使用包含 "x86 "的镜像名称。
css复制代码 docker run --privileged -d -p 6080:6080 -p 5554:5554 -p 5555:5555 -e DEVICE="Samsung Galaxy S6" --name android-container budtmo/docker-android-x86-8.1
对于OSX和Windows操作系统,请使用支持Ubuntu操作系统的虚拟化的虚拟机。
确认docker主机的IP地址。
对于OSX,你可以通过使用以下命令找到。
arduino复制代码docker-machine ip default
对于不同的操作系统,localhost应该可以。
从网络浏览器打开***http://docker-host-ip-address:6080***。注意:添加
?view_only=true
将给予用户只能查看的权限。
自定义配置
本文包含了你可能需要的Docker-Android的自定义配置,例如代理,在飞行中改变语言,等等。
构建Android项目
Docker-Android可以用来构建Android项目并执行其单元测试。下面的步骤将说明如何构建Android项目。
克隆这个样本测试项目。
bash复制代码git clone git@github.com:android/testing-samples.git
建立该项目
bash复制代码docker run -it --rm -v $PWD/testing-samples/ui/espresso/basicSample:/tmp -w /tmp budtmo/docker-android-x86-8.1 /tmp/gradlew build
用这个命令创建一个docker容器
yaml复制代码$ docker run --privileged -d -p 6080:6080 -p 5554:5554 -p 5555:5555 -p 4723:4723 --name android-container-appium budtmo/docker-android-real-device
打开noVNC http://localhost:6080
在noVNC窗口上点击右键打开终端,>>终端模拟器。
连接到主机的adb(确保你的主机有adb并连接到设备上。)
csharp复制代码$ adb -H host.docker.internal devices
要指定端口,只需添加
-P port_number
。csharp复制代码$ adb -H host.docker.internal -P 5037 devices
现在你的容器可以访问你的主机设备。但是,你需要添加 "remoteAdbHost "和 "adbPort "所需的能力,以使Appium能够识别这些设备。
Appium和Selenium Grid
如果你想使用Appium和Selenium Grid,你可以按照该文档。它还包含样本和用例。
控制容器外的安卓模拟器
arduino复制代码adb connect <docker-machine-ip-address>:5555
**注意:**你需要在主机上安装Android调试桥(adb)。
短信模拟
使用telnet
bash复制代码docker exec -it android-container cat /root/.emulator_console_auth_token
css复制代码telnet <docker-machine-ip-address> 5554
复制代码auth <auth_token
xml复制代码sms send <phone_number> <message>(短信)。
发送短信
使用1.步骤中给定的auth_token登录
使用telnet访问模拟器,用auth_token登录
找到auth_token并复制它。
使用adb
perl复制代码docker exec -it android-container adb emu sms send <phone_number> <message>。
你也可以使用adb库将其集成到项目中。
谷歌游戏服务和谷歌游戏商店
目前没有安装。
Jenkins
这个文件给你提供了关于支持Docker-Android的自定义插件的信息。
VMWARE
这个文档告诉你如何在VMWARE上配置虚拟机,以便能够运行Docker-Android。
云
这个文档包含关于在云服务上部署Docker-Android的信息。
Genymotion
对于没有资源维护模拟器或购买机器或需要不同设备配置文件的人来说,你需要尝试一下Genymotion Cloud。Docker-Android与Genymotion集成在不同的云服务上,例如Genymotion云、AWS、GCP、阿里巴巴云。请关注本文档或本博客以了解更多细节。
故障排除
容器内的所有日志都存储在**/var/log/supervisor文件夹下。你可以通过使用docker exec**打印出日志文件。例子。
bash复制代码docker exec -it android-container tail -f /var/log/supervisor/docker-android.stdout.log
仿真器皮肤
仿真器皮肤取自Android Studio IDE和三星开发者网站
监控
你可以使用cadvisor结合influxdb / prometheus和grafana(如果需要的话)来监控每个正在运行的容器。
GitHub - budtmo/docker-android: Android in docker solution with noVNC supported and video recording