Docker selenium 自动化 - 使用python操作docker,python运行、启用、停用和查询容器实例演示

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: Docker selenium 自动化 - 使用python操作docker,python运行、启用、停用和查询容器实例演示

         

Docker selenium 自动化 - 使用 Python 操作 docker 运行、启用、停用和查询容器实例演示

[系列文章篇]

篇章一:Docker selenium 自动化 - windowsdocker 的安装与运行环境检测

篇章二:Docker selenium 自动化 - Python 调用容器实例跑自动化查天气实例演示,docker selenium 自动化环境部署过程

[问题处理篇]

篇章一:Docker selenium 自动化 - 修改 /dev/shm 路径大小实例演示,“session deleted because of page crash” 问题解决

篇章二:Docker selenium 自动化 - 执行程序没反应、不执行原因,强制处理之前失败的进程,“… requests waiting for a slot to be free” 问题解决

第一章:Python 操作 docker

① python 运行 docker 容器实例

通过 pip install docker 安装 dockerpython 库后即可调用本地的 docker 程序。

import docker
client = docker.from_env()
def create_docker1(docker_name):
    '''
     作用:运行一个(selenium/hub)容器实例,可选参数detach=True为后台运行
     参数:docker_name为容器的名称
     返回:容器对象
    '''
    client.containers.run("selenium/hub", name = docker_name, ports={"4444/tcp":None}, detach = True, shm_size="500M");
    container = client.containers.get(docker_name);
    return container
def create_docker2(docker_name):
    '''
     作用:运行一个(selenium/node-chrome)容器实例,可选参数detach=True为后台运行
     参数:docker_name为容器的名称
     返回:容器对象
    '''
    client.containers.run("selenium/node-chrome", name = docker_name, detach = True, links = {"hub":"hub"});
    container = client.containers.get(docker_name);
    return container
container = create_docker1("hub");
container = create_docker2("elastic_tharp");

执行完可以查看容器信息,已经创建成功并运行了。

可以正常打开 seleniumGrid 控制台。

image.png

② python 启用、停用容器实例

def stop_docker(container_name):
    '''
     作用:停用容器
     参数:需要停用的容器名称
     返回:无
    '''
    container = client.containers.get(container_name)
    container.stop()
    print("容器已停用")
def start_docker(container_name):
    '''
     作用:启用容器
     参数:需要启用的容器名称
     返回:无
    '''
    container = client.containers.get(container_name)
    container.start()
    print("容器已启用")
start_docker("hub")
start_docker("elastic_tharp")

③ python 查询、展示容器实例列表

def list_docker():
    '''
     作用:展示容器相关列表
     参数:无
     返回:无
    '''
    # 显示所有的容器对象
    results = client.containers.list()
    k = 0
    for i in results:
        k = k + 1;
        print("序号:" + str(k))
        print("容器短id:" + i.short_id)
        print("容器名:" + i.name)
        print("容器状态:" + i.status)
        print("容器端口:" + str(i.ports))
        print("")

image.png

第二章:Python 调用 docker selenium 执行自动化实例演示

① 源码展示

容器实例重启后,对应的端口信息会有相应的改变,所以测试的地址跟最开始创建时有所差异。

# -*- coding: UTF8 -*-
# 2021.12.13
# 小蓝枣
# docker selenium 自动化
from selenium import webdriver
from time import sleep
driver = webdriver.Remote(
    command_executor='http://127.0.0.1:55611/wd/hub',
    desired_capabilities={'browserName': 'chrome'}
)
try:
    # 登录中国气象网查看北京天气
    driver.get('http://www.weather.com.cn/weather1d/101010100.shtml')
    sleep(3)
    # 读取天气信息
    bj_temperature = driver.find_element_by_xpath('//*[@class="sk mySkyNull"]//*[@class="tem"]/*').text
    bj_wind_direction = driver.find_element_by_xpath('//*[@class="sk mySkyNull"]//*[@class="zs w"]/span').text
    bj_wind_class = driver.find_element_by_xpath('//*[@class="sk mySkyNull"]//*[@class="zs w"]/em').text
    bj_air_quality = driver.find_element_by_xpath('//*[@class="sk mySkyNull"]//*[@class="zs pol"]//a').text
    bj_weather = '''
    城市:北京
    当前温度:%s
    风向:%s
    风力:%s
    空气质量:%s
    '''%(bj_temperature,bj_wind_direction,bj_wind_class,bj_air_quality)
    # 打印抓取的天气信息
    print(bj_weather)
    # 保存截图
    driver.get_screenshot_as_file("docker_selenium_run_001.png")
# 保证出错后进程正常释放
finally:
    driver.quit()

② 运行效果

抓取的天气信息如下:

image.png

同时可以看到保存的截图。

image.png

image.png

喜欢的点个赞❤吧!

   

目录
相关文章
|
1月前
|
监控 NoSQL 时序数据库
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
231 77
|
2天前
|
Ubuntu NoSQL Linux
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
38 6
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
|
13天前
|
搜索推荐 安全 数据安全/隐私保护
7 个最能提高生产力的 Docker 容器
7 个最能提高生产力的 Docker 容器
86 35
|
1月前
|
监控 Docker 容器
在Docker容器中运行打包好的应用程序
在Docker容器中运行打包好的应用程序
|
13天前
|
Ubuntu Linux 开发工具
docker 是什么?docker初认识之如何部署docker-优雅草后续将会把产品发布部署至docker容器中-因此会出相关系列文章-优雅草央千澈
Docker 是一个开源的容器化平台,允许开发者将应用程序及其依赖项打包成标准化单元(容器),确保在任何支持 Docker 的操作系统上一致运行。容器共享主机内核,提供轻量级、高效的执行环境。本文介绍如何在 Ubuntu 上安装 Docker,并通过简单步骤验证安装成功。后续文章将探讨使用 Docker 部署开源项目。优雅草央千澈 源、安装 Docker 包、验证安装 - 适用场景:开发、测试、生产环境 通过以上步骤,您可以在 Ubuntu 系统上成功安装并运行 Docker,为后续的应用部署打下基础。
docker 是什么?docker初认识之如何部署docker-优雅草后续将会把产品发布部署至docker容器中-因此会出相关系列文章-优雅草央千澈
|
1天前
|
运维 Java 虚拟化
《docker基础篇:1.Docker简介》,包括Docker是什么、容器与虚拟机比较、能干嘛、去哪下
《docker基础篇:1.Docker简介》,包括Docker是什么、容器与虚拟机比较、能干嘛、去哪下
37 12
|
2天前
|
Kubernetes Linux 虚拟化
入门级容器技术解析:Docker和K8s的区别与关系
本文介绍了容器技术的发展历程及其重要组成部分Docker和Kubernetes。从传统物理机到虚拟机,再到容器化,每一步都旨在更高效地利用服务器资源并简化应用部署。容器技术通过隔离环境、减少依赖冲突和提高可移植性,解决了传统部署方式中的诸多问题。Docker作为容器化平台,专注于创建和管理容器;而Kubernetes则是一个强大的容器编排系统,用于自动化部署、扩展和管理容器化应用。两者相辅相成,共同推动了现代云原生应用的快速发展。
29 10
|
19天前
|
Unix Linux Docker
CentOS停更沉寂,RHEL巨变限制源代:Docker容器化技术的兴起助力操作系统新格局
操作系统是计算机系统的核心软件,管理和控制硬件与软件资源,为用户和应用程序提供高效、安全的运行环境。Linux作为开源、跨平台的操作系统,具有高度可定制性、稳定性和安全性,广泛应用于服务器、云计算、物联网等领域。其发展得益于庞大的社区支持,多种发行版如Ubuntu、Debian、Fedora等满足不同需求。
44 4
|
1月前
|
数据建模 应用服务中间件 nginx
docker替换宿主与容器的映射端口和文件路径
通过正确配置 Docker 的端口和文件路径映射,可以有效地管理容器化应用程序,确保其高效运行和数据持久性。在生产环境中,动态替换映射配置有助于灵活应对各种需求变化。以上方法和步骤提供了一种可靠且易于操作的方案,帮助您轻松管理 Docker 容器的端口和路径映射。
116 3
|
1月前
|
数据库 Docker 容器
Docker在现代软件开发中扮演着重要角色,通过Dockerfile自动化构建Docker镜像,实现高效、可重复的构建过程。
Docker在现代软件开发中扮演着重要角色,通过Dockerfile自动化构建Docker镜像,实现高效、可重复的构建过程。Dockerfile定义了构建镜像所需的所有指令,包括基础镜像选择、软件安装、文件复制等,极大提高了开发和部署的灵活性与一致性。掌握Dockerfile的编写,对于提升软件开发效率和环境管理具有重要意义。
67 9