在使用Selenium进行自动化测试的时候,为了到达能够简单部署的目的,可以直接选用selenium/standalone-chrome的官方Docker镜像来搭建服务,这样就可以不用考虑Webdriver和浏览器的版本适配问题。但是我每天需要进行自动化测试的时间只需要一小会儿,如果让selenium/standalone-chrome容器一直运行在后台,对我的1C2G的小服务器来说占用了太多资源。针对这个问题,Docker提供了SDK可以让Python程序在需要的时候启用容器,测试完成后再停止容器来节约服务器资源

docker库的基本配置

1
2
3
4
5
# docker库安装
sudo pip install docker
# 使用CPyhon解释器运行
import docker
# 如果没有报错就说明安装完成

docker库的常见用法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 实例化
client = docker.from_env()

# 运行一个容器
client.containers.run('镜像名称', detach=True, **kwargs) # detach:后台运行 **kwargs:需要根据镜像所需的变量设置

# 创建一个容器但不运行
client.containers.create('镜像名称', detach=True, **kwargs) # 用法同.run

# 停止容器
container = client.containers.get('容器名称/容器ID')
container.stop()

# 启用容器
container = client.containers.get('容器名称/容器ID')
container.start()

# 查询容器并遍历相关信息
containers = client.containers.list(**kwargs) # 无参数:默认只显示正在运行的容器 all:显示所有容器
for container in containers:
print('容器ID:'+container.short_id)
print('容器名称:'+container.name)
print('容器状态:'+container.status)

需要注意的是,因为Docker的运行需要root权限,所以当在Python程序代码中添加操作Docker的相关功能后,Python程序也需要使用root权限运行