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

简介: 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

喜欢的点个赞❤吧!

   

目录
相关文章
|
7月前
|
数据采集 Web App开发 JavaScript
基于Selenium的Python爬虫抓取动态App图片
基于Selenium的Python爬虫抓取动态App图片
522 68
|
8月前
|
前端开发 JavaScript 关系型数据库
基于python的租房网站-房屋出租租赁系统(python+django+vue)源码+运行
该项目是基于python/django/vue开发的房屋租赁系统/租房平台,作为本学期的课程作业作品。欢迎大家提出宝贵建议。
269 6
|
8月前
|
前端开发 JavaScript 关系型数据库
基于Python+Vue开发的美容预约管理系统源码+运行
基于Python+Vue开发的美容预约管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Python的美容诊所预约管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
137 9
|
8月前
|
JavaScript 前端开发 关系型数据库
基于Python+Vue开发的体育场馆预约管理系统源码+运行
本项目为大学生课程设计作业,采用Python和Vue技术构建了一个体育场馆预约管理系统(实现前后端分离)。系统的主要目标在于帮助学生理解和掌握Python编程知识,同时培养其项目规划和开发能力。参与该项目的学习过程,学生能够在实际操作中锻炼技能,为未来的职业发展奠定良好的基础。
204 3
|
8月前
|
前端开发 JavaScript 关系型数据库
基于Python+Vue开发的摄影网上预约管理系统源码+运行
基于Python+Vue开发的摄影网上预约管理系统(前后端分离),影楼婚纱摄影,这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Python的在线摄影预约管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
162 8
|
8月前
|
前端开发 JavaScript 关系型数据库
基于Python+Vue开发的民宿客房预订管理系统源码运行
基于Python+Vue开发的民宿客房预订管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Python的民宿客房预订管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
186 8
|
8月前
|
前端开发 JavaScript 关系型数据库
基于Python+Vue开发的新闻管理系统源码+运行
基于Python+Vue开发的新闻管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Python的新闻管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
202 5
|
8月前
|
前端开发 JavaScript 关系型数据库
基于Python+Vue开发的房产销售管理系统源码+运行
基于Python+Vue开发的房产销售管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Python的房产销售管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
167 2
|
3月前
|
数据采集 机器学习/深度学习 人工智能
Python:现代编程的首选语言
Python:现代编程的首选语言
308 102
|
3月前
|
数据采集 机器学习/深度学习 算法框架/工具
Python:现代编程的瑞士军刀
Python:现代编程的瑞士军刀
338 104