当前位置: 首页 > news >正文

Python Selenium Grid 环境快速搭建

今天在看selenium grid文档的时候,发现selenium grid4的设计还是不错的,想顺手体验一下,于是就发现了docker-selenium项目,可以快速的设置好selenium grid环境,非常简单方便。

然而后面准备用python去写个简单例子的时候,发现很难找到python代码的例子,好不容易找到1个却发现跑不起来,于是简单的看了下源码,找到了正确的打开方式,这里简单分享一下。

selenium grid的使用场景

在我看来grid的使用场景有两个

  • 在不同的浏览器上并行跑用例,这比挨个在不同浏览器上跑要省不少时间

  • 启动多个节点在同一个浏览器上并行跑用例,同样也是节约了执行时间

快速安装好selenium grid环境

Selenium grid有多种模式,比如Standalone, Hub and Node,对于初次体验来说无脑用Standalone是不会有问题的。

传统的方式是使用java来运行jar包安装,不过docker selenium提供了更简单的方式,直接用docker跑镜像就好了。比如下面的命令就启动了1个firefox的远程节点。

docker run -d -p 4444:4444 -p 7900:7900 --shm-size="2g" selenium/standalone-firefox:4.11.0-20230801

这里暴露了2个端口

  • 4444: hub的端口,直接访问可以看到所有节点的信息

  • 7900: vnc的端口,访问http://localhost:7900/?autoconnect=1&resize=scale&password=secret就可以看到远程节点上的浏览器运行情况,非常方便了

连接远程节点进行测试

代码很简单,我的运行环境是

  • python: 3.10.2

  • selenium: 4.11.2

  • selenium gird: selenium/standalone-firefox:4.11.0-20230801

  1. from selenium  import webdriver 

  2. from selenium.webdriver.firefox.options import Options

  3. import time

  4. ff_option = Options()

  5. dr = webdriver.Remote(

  6.     command_executor='http://127.0.0.1:4444/wd/hub',

  7.  options=ff_option

  8. )

  9. dr.get('https://google.com')

  10. time.sleep(5)

  11. dr.quit()

这里需要注意的是启动链接remote节点的时候需要传入ff_option,之前的版本的代码里需要传入类似于desired_capabilities={'browserName': 'firefox', 'javascriptEnabled': True})的参数,在某个版本的selenium里这个参数被废弃掉了,需要用浏览器的option来替代。

在脚本运行的时候用浏览器访问http://localhost:7900/?autoconnect=1&resize=scale&password=secret可以看到脚本的执行过程,挺有意思的。

总结

selenium grid的热度应该不高,所以实践分享和代码都不是很多。不过如果有同学需要做sass服务,提供远程执行selenium测试用例的测试平台的话,selenium grid是一个非常不错的开箱即用的选择。特别是selenium grid的Distribute的实现十分的工程化,可以配置的东西很多,而且对外提供了一系列的接口,二次开发的潜力还是巨大的。

 行动吧,在路上总比一直观望的要好,未来的你肯定会感 谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入扣群: 320231853,里面有各种软件测试+开发资料和技术可以一起交流学习哦。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

相关文章:

Python Selenium Grid 环境快速搭建

今天在看selenium grid文档的时候,发现selenium grid4的设计还是不错的,想顺手体验一下,于是就发现了docker-selenium项目,可以快速的设置好selenium grid环境,非常简单方便。 然而后面准备用python去写个简单例子的时…...

电机控制系列模块解析(21)—— 弱磁控制

一、弱磁控制 常用的FW即弱磁控制方法一般为:电压外环控制、单个电流环控制、直接输出电压幅值分配控制、输出电压角度PI控制、不弱磁控制、直接解析解、查表、速度反比例曲线拟合等等。 弱磁控制相关因素:过调制(母线电压的剧烈波动&#x…...

【3dmax笔记】022:文件合并、导入、导出

文章目录 一、合并二、导入三、导出四、注意事项一、合并 只能合并 max 文件(高版本能够合并低版本模型,低版本不能合并高版本的模型)。点击【文件】→【导入】→【合并】: 选择要合并的文件,后缀名为3dmax默认的格式,max文件。 二、导入 点击【文件】→【导入】→【导…...

8、QT——QLabel使用小记2

前言:记录开发过程中QLabel的使用,持续更新ing... 开发平台:Win10 64位 开发环境:Qt Creator 13.0.0 构建环境:Qt 5.15.2 MSVC2019 64位 一、基本属性 技巧:对于Qlabel这类控件的属性有一些共同的特点&am…...

python实现读取串口数据-使用LibModbus库实现一个实时读取串口数据

在工业自动化领域,Modbus协议因其简单、可靠和广泛支持而备受青睐。其中,Modbus RTU(串行通信)以其低成本和易实施性在许多场景中发挥着重要作用。 01 Modbus RTU协议简介 Modbus RTU是一种基于串行通信的Modbus协议,…...

类与面向对象编程(Object-Oriented Programming, OOP)

类与面向对象编程(Object-Oriented Programming, OOP)(一) 对象比较:‘is’ 对比 ‘’ 当我还是个孩子的时候,我们的邻居拥有一对双胞胎猫咪。它们看起来几乎一模一样—同样的炭黑色毛发和同样锐利的绿色…...

引用数据类型 栈内存 堆内存

let m { a: 10, b: 20 }; let n m; n.a 15; console.log(m.a) // 15 原因:基本数据类型存储在栈内存中,引用数据类型存储在堆内存中 ,引用数据类型存储在堆内存中会在栈内存中创建一个指针,栈内存中的这个指针指向堆内存中的地…...

【class8】人工智能初步(图像识别-----卷积神经网络)

上节回顾 上节课,我们简单了解了图像识别和深度学习的相关知识。 快速回顾一下吧~ A图像识别是以图像的主要特征为基础的。B. 图像分辨率决定图像的质量。 C. 像素是图像中的最小单位D. 在图像识别的原理上,计算机和人类在本质…...

Node.js安装及环境配置(超详细!保姆级!!)

目录 一、进入官网地址下载安装包 二、安装程序 三、环境配置 四、测试 五、安装淘宝镜像 一、进入官网地址下载安装包 Node.js — Download Node.js (nodejs.org) 选择对应你系统的 node.js 版本,我选择的是Windows系统,64位 点击图中选项&#…...

利用反射如何动态生成sql

一.自定义注解 UpdateWhere Target({ElementType.FIELD}) //作用于类 Retention(RetentionPolicy.RUNTIME) //运行时有效 Documented //可以出现在文档里 Inherited public interface UpdateWhere {}二.创建实体类接受 pu…...

SpringBoot项目中使用Redis,Mybatis和JWT

在Spring Boot项目中,结合Redis,MyBatis和JWT的使用可以提供以下功能: Redis的作用: 1.缓存:Redis可以用作缓存存储,提高应用程序的性能和响应速度。特别是对于频繁读取但不经常更新的数据,如配…...

CSS2(一):CSS选择器

文章目录 1、CSS基础1.1 CSS简介1.2 CSS编写位置1.2.1 行内样式1.2.2 内部样式1.2.3 外部样式1.2.4 样式优先级 1.2.5 CSS代码风格 2、CSS选择器2.1、基本选择器2.1.1 通配选择器2.1.2 元素选择器2.1.3 类选择器2.1.4 ID选择器2.1.5 总结 2.2、CSS复合选择器2.2.1 交集选择器2.…...

LeetCode题练习与总结:不同的二叉搜索树--96

一、题目描述 给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。 示例 1: 输入:n 3 输出:5示例 2: 输入:n 1 输出&…...

第八十一章 将 Web 应用程序与远程 Web 服务器结合使用 - 如果从 Web 服务器提供静态文件

文章目录 第八十一章 将 Web 应用程序与远程 Web 服务器结合使用 - 如果从 Web 服务器提供静态文件如果从 Web 服务器提供静态文件配置 Web 服务器路径将虚拟目录添加到 IIS将别名添加到 Apache 配置 第八十一章 将 Web 应用程序与远程 Web 服务器结合使用 - 如果从 Web 服务器…...

AVL树、红黑树

数据结构、算法总述:数据结构/算法 C/C-CSDN博客 AVL树 定义 空二叉树是一个 AVL 树如果 T 是一棵 AVL 树,那么其左右子树也是 AVL 树,并且 ,h 是其左右子树的高度树高为 平衡因子:右子树高度 - 左子树高度 创建节点…...

Vscode编辑器 js 输入log自动补全

最近换了新电脑,新下载了Vscode,记录一下设置项。 Vscode 版本 想要的效果 js文件中输入log(点击tab键),自动补全为 console.log() Vscode 文件》首选项》设置 搜索:snippets Emmet: Show Suggestions…...

structured concurrency

1. 基于 c executions的异步实现 - 从理论到实践 - 知乎 (zhihu.com)...

【免费】在线识别通用验证码接口

模块优势价格5元1000次&#xff0c;每天免费100次api文档支持 使用量小的完全够用了 <?phpfunction Post_base64($base64_str){$url http://api.95man.com:8888/api/Http/Recog?Taken41******QK&imgtype1&len0 ; $fields array( ImgBase64>$base64_str); $ch…...

如何通过汽车制造供应商协同平台,提高供应链的效率与稳定性?

汽车制造供应商协同是指在汽车制造过程中&#xff0c;整车制造商与其零部件供应商之间建立的一种紧密合作的关系。这种协同关系旨在优化整个供应链的效率&#xff0c;降低成本&#xff0c;提高产品质量&#xff0c;加快创新速度&#xff0c;并最终提升整个汽车产业的竞争力。以…...

使用LangChain创建简易聊天机器人

LangChain 是什么 就是一个框架或者说是一个工具&#xff0c;用来写 AI 应用。对&#xff0c;没有错&#xff01;AI小白也可以&#xff0c;有手就行&#xff01; LangChain有几个核心模块&#xff1a;Models、Prompts、Chains、Indexes、Memory、Agents。 这篇主要介绍Models、…...

Karpathy 加入 Anthropic 真相:不是人才争夺,是「用 AI 训练 AI」的自我加速时代

先想象一个场景 2026 年初&#xff0c;你是一家 AI 实验室的 CTO。预算有限&#xff0c;买不起 OpenAI 那量级的 GPU。你有三个选择&#xff1a; A. 追着头部跑&#xff0c;花 80% 的钱买算力&#xff0c;剩下 20% 养团队——永远比别人慢半步 B. 放弃预训练&#xff0c;专注…...

2026年人工智能(AI)产业深度分析报告(附下载)

人工智能正从“技术验证”迈向“产业化规模落地”的关键转折期。Gartner指出&#xff0c;AI在整个2026年将处于泡沫破灭低谷期&#xff0c;企业在多数情况下会选择通过现有软件供应商获取AI能力&#xff0c;只有当投资回报率的可预测性得到提升后&#xff0c;企业才能真正实现A…...

2025_NIPS_TradeMaster: A Holistic Quantitative Trading Platform Empowered by Reinforcement Learning

TradeMaster 论文总结与核心内容翻译 一、文章主要内容 TradeMaster 是一款面向强化学习量化交易(RLFT)的全栈开源平台,旨在解决 RL 技术在实际金融市场部署中面临的工程实现难、基准对比难、易用性差三大核心挑战。文章围绕该平台展开全面阐述,核心内容包括: 1. 平台定…...

DayZCommunityOfflineMode:构建专属末日世界的完整解决方案

DayZCommunityOfflineMode&#xff1a;构建专属末日世界的完整解决方案 【免费下载链接】DayZCommunityOfflineMode A community made offline mod for DayZ Standalone 项目地址: https://gitcode.com/gh_mirrors/da/DayZCommunityOfflineMode DayZCommunityOfflineMod…...

高炉智变:12期实战带你玩转工业AI落地~系列文章11:可解释AI实践:SHAP+LIME打开高炉模型的“黑箱“

&#x1f3af; 高炉智变11&#xff5c;可解释AI实践&#xff1a;SHAPLIME打开高炉模型的"黑箱" &#x1f4c5; 本文目录 一、前言&#xff1a;AI可解释性的重要性二、SHAP可解释性框架三、LIME局部解释方法四、高炉模型可解释性实践五、实战代码实现六、总结与预告 一…...

大模型面试100问:从Transformer到RAG,互联网大厂AI岗位必备!

本文主要针对想要或者正在从事大语言模型、知识库、搜索增强生成&#xff08;RAG&#xff09;的研发、产品和测试同学&#xff0c;在面试中会遇到什么样的问题&#xff1f; 以下主要来自于各位从事大模型研发、产品和测试的伙伴、朋友在面试互联网大厂、AI科技公司的相关AI岗位…...

别再只会用OpenCV的equalizeHist了!用Python实战图像增强,让你的目标检测模型精度提升一个台阶

突破OpenCV基础操作&#xff1a;Python图像增强实战与目标检测精度优化 在目标检测项目的实际开发中&#xff0c;我们常常遇到这样的困境&#xff1a;模型在标准测试集上表现优异&#xff0c;一旦部署到真实场景&#xff0c;面对复杂光照、低对比度的图像时&#xff0c;性能却…...

ScienceDecrypting完整指南:3步永久解锁加密PDF文档限制

ScienceDecrypting完整指南&#xff1a;3步永久解锁加密PDF文档限制 【免费下载链接】ScienceDecrypting 破解CAJViewer带有效期的文档&#xff0c;支持破解科学文库、标准全文数据库下载的文档。无损破解&#xff0c;保留文字和目录&#xff0c;解除有效期限制。 项目地址: …...

别再死磕流程图了!用PAD图搞定详细设计,代码自动生成不是梦

别再死磕流程图了&#xff01;用PAD图搞定详细设计&#xff0c;代码自动生成不是梦 如果你还在用传统流程图做详细设计&#xff0c;每次修改需求都要重画半张图&#xff1b;如果你受够了N-S图方框套方框的视觉折磨&#xff0c;连个简单循环都要画成俄罗斯套娃——是时候认识PAD…...

告别卡顿!用Sunshine打造私人游戏串流服务器的完整指南

告别卡顿&#xff01;用Sunshine打造私人游戏串流服务器的完整指南 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine 你是否曾经梦想过在任何设备上流畅玩PC游戏&#xff1f;无论是躺…...