多进程使用docker容器中的selenium

安装selenium+chrome详解 安装selenium+chrome详解,创建yaml文件,命名为:docker-compose-chrome.yaml,具体内容如下…… 阅读详情

启动容器

docker run -it --rm --shm-size="4g" -p 4444:4444 selenium/standalone-chrome:3.141.59
适当增加--shm-size="4g"大小,默认为64M,会抛出以下错误

Traceback (most recent call last):
  File "C:\Program Files\Python38\lib\multiprocessing\process.py", line 315, in _bootstrap
    self.run()
  File "C:\Program Files\Python38\lib\multiprocessing\process.py", line 108, in run
    self._target(*self._args, **self._kwargs)
  File "D:\workspace\test\test_selenium.py", line 18, in test
    driver.get("https://www.baidu.com")
  File "C:\Program Files\Python38\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 333, in get
    self.execute(Command.GET, {'url': url})
  File "C:\Program Files\Python38\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "C:\Program Files\Python38\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: unknown error: session deleted because of page crash
from unknown error: cannot determine loading status
from tab crashed
  (Session info: chrome=92.0.4515.107)

代码示例

import time

from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
from multiprocessing import Process

driver = webdriver.Remote(
    command_executor="http://localhost:4444/wd/hub",
    desired_capabilities=DesiredCapabilities.CHROME
)


def test(i):
    time.sleep(3)
    driver.get("https://www.baidu.com")
    print(driver.title, i)


if __name__ == '__main__':

    p_list = []
    for i in range(5):
        p_list.append(Process(target=test, args=(i,)))

    for p in p_list:
        p.start()

    for p in p_list:
        p.join()

    driver.close()
共享内存简介及docker容器的shm设置与修改 共享内存简介及docker容器的shm设置与修改 共享内存简介 共享内存指 (shared memory)在多处理器的计算机系统中,可以被不同中央处理器(CPU)访问的大容量内存。由于多个CPU需要快速访问存储器,这样就要对存储器进行缓存(Cache)。任何一个缓存的数据被更新后,由于其他处理器也可能要存取,共享内存就需要立即更新,否则不同的处理器可能用到不同的数据。共享内存是 Unix下的多进程之间的通信方法 ,这种方法通常用于一个程序的多进程间通信,实际上多个程序间也可以通过共享内存来传递信息。 实际上 阅读详情

相关推荐

python自动化,python3 + selenium + docker_chrome

python3 + selenium + docker_chrome实现了什么本文要说什么工作思路技术前提要求环境准备安装selenium/standalone-chrome-debug安装界面登录工具python + selenium执行程序Done! 实现了什么 python3 + selenium + chrome 可以进行网页内容提取,俗称爬虫 进行自动化操作 本文要说什么 安装chrome docker版,主要是为了能够在后台运行chrome且随时可以得到界面调试 python3和selen

ruanyucai的博客 1684

Docker入门

Docker简介 Docker 镜像(image) 镜像是一个可执行的包,它包含了所有用来执行某个软件所需要的内容,包括代码,运行时,库,环境变量,还有配置文件。 Docker容器(container) 容器是镜像运行时的实例–镜像执行时,在内存中变成的样子。容器可以原生地运行在Linux中,它和其余的容器共享本地Linux主机的内核。docker ps,查看正在运行的容器;docker stop...

xinming_365的博客 5283

避坑指南:为什么你的 Docker 容器里总有 Chrome 僵尸进程?深入解析进程托管机制

本文深入解析了Docker容器中Chrome僵尸进程的成因与解决方案。通过分析Linux进程托管机制和Chrome多进程架构,提供了包括使用Docker内置初始化系统、dumb-init进程包装器以及应用层信号忽略在内的多种根治方案,帮助开发者有效解决这一常见问题。

weixin_30733003的博客 323

chrome容器化部署实战

本文是作者在selenium自动运维中的实战总结,一扫网上诸多不清晰的介绍文章

曲折旅程,艰难人生 7560

Selenium 4.0+全栈集成实战:从架构设计到CI/CD部署

自动化测试是现代软件工程中保障质量与效率的核心环节,其原理在于通过脚本模拟用户操作,验证应用功能与性能。在Web技术快速演进的背景下,面对单页应用、异步加载等复杂场景,传统自动化方案常面临稳定性挑战。Selenium作为广泛采用的浏览器自动化工具,其价值在于提供了跨平台、多语言的标准化操作接口。通过引入分层架构、容器化部署等工程实践,Selenium能够无缝集成至持续集成流水线,实现测试流程的标准化与可维护性。本文聚焦Selenium 4.0+的全栈集成方案,深入解析如何结合Chrome DevTools

weixin_30729609的博客 367

webdriver_manager:自动化管理Selenium驱动,告别版本匹配烦恼

在软件开发和测试领域,环境配置是开发者面临的高频痛点,尤其是在进行Web自动化测试时。Selenium作为主流的浏览器自动化工具,其核心依赖于特定版本的浏览器驱动(如ChromeDriver),手动管理这些驱动常导致版本不匹配、下载繁琐等问题。webdriver_manager库通过智能探测本地浏览器版本、自动下载匹配的驱动并缓存,实现了驱动管理的自动化。其原理基于版本映射和缓存机制,技术价值在于将开发者从重复的配置工作中解放,提升项目可维护性和团队协作效率。应用场景广泛覆盖单机脚本、Pytest测试框架、

weixin_34059951的博客 346

Docker + Selenium Grid 搭建分布式 UI 自动化测试

Selenium Grid 是 selenium 提供的一个分布式测试工具,将自动化脚本发布到多个物理机或者虚拟机(跨平台、跨浏览器)上执行,通过一个中心节点来控制多个设备,也就是在中心节点(hub)上管理测试,在其它节点(node)上执行测试,以实现 Selenium 的并行执行。除了可以在多个设备上运行测试脚本以外,Selenium Grid 也可以实现多浏览器兼容性测试。Node 本身不提供多线程并发执行,需要结合多进程技术实现并行执行用例。使用场景并发执行测试用例,减少测试执行时间。

OKC_0_Westbrook的博客 1061

保姆级教程:用再生龙Clonezilla Live给Ubuntu系统做全盘备份与恢复(含BIOS设置避坑)

本文提供了一份详细的Clonezilla Live教程,指导Ubuntu用户如何轻松完成全盘备份与恢复。从启动盘制作、BIOS设置避坑到备份参数解析和恢复操作,涵盖了所有关键步骤和常见问题解决方案,帮助用户高效保护系统数据。

weixin_42116058的博客 630

基于Docker与Selenium Grid构建高并发Web自动化测试集群实战

Web自动化测试与数据采集是现代软件开发与数据分析中的关键技术,其核心在于模拟真实用户操作浏览器以处理动态内容。传统单机方案面临资源消耗大、并发能力有限等瓶颈。通过容器化技术将浏览器运行环境打包为轻量、可复制的单元,结合分布式架构实现资源池化与弹性伸缩,能够有效突破并发限制。Selenium Grid作为分布式测试框架,通过会话队列管理任务请求,利用负载均衡器智能分配至空闲节点,实现了任务调度与资源管理的解耦。这种架构不仅提升了测试与采集任务的执行效率,还通过环境一致性保障了结果的可靠性。本文以Docker

weixin_33889665的博客 376

逆向工程实战:如何一步步破解京东APP的sign签名算法(附Frida脚本)

本文详细解析了京东APP的sign签名算法逆向工程实战,通过Frida脚本动态分析Java层和Native层的多层签名机制,揭示商业应用的加密协议设计。文章提供了完整的逆向工程方法论与工具链,帮助开发者深入理解移动应用安全防护体系,提升安全防御能力。

weixin_28622215的博客 904

香橙派rk3588的rknn多线程推理RTSP流服务性能优化与资源分配策略

本文深入探讨了香橙派RK3588平台上的RKNN多线程推理在RTSP流服务中的性能优化与资源分配策略。通过分析硬件架构、设计多线程推理流水线、实现NPU核心负载均衡及优化RGA内存管理,显著提升了RTSP视频流的处理帧率和降低了延迟,为边缘计算视频分析应用提供了实用的优化方案。

7up55的博客 648

UI 自动化分布式测试 —— Docker Selenium Grid!

Docker 和Selenium Grid的结合为分布式 UI 自动化测试提供了一种高效、可扩展且易于管理的方法。通过使用 Docker 容器化技术,测试环境的设置和配置变得更加简便和一致;而 Selenium Grid 则允许在多个节点上并行运行分布式测试,从而大大提升测试的速度和覆盖范围。

测试界的彭于晏的博客 1092

Oracle 19c RAC安装踩坑实录:OpenSSH 8.x版本与OUI的“兼容性战争”及一劳永逸的解决思路

本文深入解析Oracle 19c RAC在Linux8环境中部署时遇到的OpenSSH 8.x版本兼容性问题,特别是[INS-06006]错误的根源与解决方案。从协议层分析冲突本质,提供SCP包装器技术、官方补丁应用指南及现代化部署体系构建三种解决方案,帮助企业高效完成RAC安装并规避类似问题。

weixin_42648844的博客 454

Selenium项目中的Chrome用户数据目录冲突问题分析与解决方案

在使用Selenium进行自动化测试时,特别是使用Chrome浏览器时,开发者经常会遇到一个常见的错误:"session not created: probably user data directory is already in use"。这个错误表明Chrome浏览器无法启动,因为指定的用户数据目录已经被占用。 ## 问题现象 当开发者尝试通过Selenium启动Chrome浏览器时,可...

gitblog_00852的博客 562

Gazebo仿真平台模型搭建与修改

ROS里踩过的坑(一)Gazebo仿真平台模型搭建与修改文件讲解Models 文件World文件Launch文件模型编辑可视化编辑配置文件编辑模型展示如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出...

Redglass的博客 1万+

816华为OD机试真题 新系统 - 电池充电时间计算 (Java/Py/C/C++/Js/Go)

816华为OD机试真题 新系统 - 电池充电时间计算 (Java/Py/C/C++/Js/Go)

算法大师! 452

docker-python-chromedriver 常见问题排查指南:新手必踩的7个坑与解决方案

docker-python-chromedriver 是一个把 Python、Google Chrome 与 Chromedriver 一起打包进 Docker 镜像的开源项目,让你不用在本地安装浏览器,就能用 Selenium 快速跑无头浏览器自动化测试。很多新手第一次接触它都会踩坑,本文整理了最常见的 7 个问题与对应解决方案,帮你快速排雷、少走弯路。 先花 10 秒认识一下这个项目:它提供

gitblog_00919的博客 344

【MATLAB】嵌入式PID控制参数整定与优化

本文提出了一种基于MATLAB仿真的嵌入式PID参数优化方法,解决了传统人工试凑法效率低、适应性差的问题。通过建立一阶滞后被控对象模型,对比分析了不同PID参数组合的性能表现,筛选出最优参数。仿真结果表明,优化后的PID参数能有效降低超调量(从传统方法的显著超调降至接近0%),缩短调节时间,提高稳态精度。最终将优化算法部署到STM32平台,实现了"仿真整定-参数优化-嵌入式落地"的完整开发流程。该方法显著提升了嵌入式系统的响应速度和控制精度,为工业控制应用提供了标准化解决方案。

unber的博客 43

Selenium容器化实战:从环境搭建到分布式测试的完整指南

在Web自动化与数据采集领域,动态渲染页面和反爬策略让传统HTTP请求难以应对,而浏览器自动化技术成为破解这一难题的关键。Selenium作为行业标准的浏览器驱动框架,通过WebDriver协议与浏览器进行原生交互,支持模拟点击、表单填写、数据抓取等真实用户操作。理解其底层原理不仅能解决元素定位、显式等待等基础问题,还能通过无头模式、CDP拦截、分布式并发等高级技巧构建高稳定的自动化系统。无论是在电商批量采集、后台管理系统的UI回归测试,还是定时巡检任务中,Selenium都展现出强大的工程价值。本文从环境

weixin_33922670的博客 345

【突变检验合集】含Pettitt突变检验等

突变检验方法合集

WW、forever的博客 3523

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

用docker搭建selenium grid分布式环境实践之路

最近需要测试zoom视频会议,同时模拟100个人加入会议。经过了解,zoom提供了直接通过url链接加入会议的方式(只能通过chrome浏览器或者FireFox浏览器,因为用的协议是webrtc)。 顺着这个思路考虑可以通过Selenium自动化,同时启动多个浏览器进程,每个进程代表一个视频会议用户,达到模拟多方会议的效果。不过有以下两个难点: 需要多个chrome浏览器进程同时存活,在电脑上启...

布道师玄柯的专栏 715

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

上一篇: ubuntu 下载完整依赖deb包
下一篇: GDAL更新左上角坐标
llc的足迹
博客等级 码龄9年 5261粉丝 198原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

llc的足迹

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值