Jmeter模拟selenium操作浏览器

article/2025/10/11 21:26:32

前言

selenium是一个web自动化测试的开源框架,它支持多语言:python/java/c#…

selenium支持多语言,是因为selenium与浏览器驱动之间是通过http协议进行通信的。只关心通信的数据是否能够正确解读 ,并不关心这个数据是从哪个客户端来。无论来自python\java,还是jmeter,postman都没有问题。

本篇文章中,以Jmeter做为客户端,跳过selenium,直接与谷歌浏览器驱动(chromedriver)进行http通信,驱动chrome浏览器去执行命令。

需要解决的问题

1、selenium有哪些请求?

2、每一个请求的请求url、请求类型如何获取?

3、每一个请求的请求数据又如何获取?

selenium - json wire protocol - 获取请求url和类型

要想解决以上3个问题,我们需要了解selenium的部分原理。

在selenium与驱动进行http通信的协议全称叫做:json wire protocol.

我们在使用selenium库驱动浏览器的时候,我们的操作有一部分大概是以下这样的:

1)打开chrome浏览器;

2)访问某一个网址;

3)查找该网址中的某一个元素;

4)操作3)中查找到的元素。

在selenium库看来,以上每一步操作都是一个http请求,也叫做命令(Command)。

chromedriver在收到这个请求之后,再去驱动对chrome浏览器执行对应的动作。
在这里插入图片描述

所以,在selenium库当中,存储了所有命令(Command)名称、命令对应的http请求类型、命令对应的请求url。

首先,来看看Command的名称(选取几个大家熟知的操作):
在这里插入图片描述

访问网站命令(GET)对应的请求类型和请求url为:
在这里插入图片描述
从上图可以看出,GET命令是post请求,请求地址只有一部分。

url中有3个问题:

1)请求的url并不完整。

url中,缺失中base地址。base地址为,chromedriver的ip+端口号。因为,命令是发给chromedriver去执行的。

2)url当中的$sessionId是什么?

在selenium当中,每开启一次与chromedriver的会话,都会生成一个会话ID。sessionId就是这个会话ID。在很多的命令请求当中,在请求地址中,通过sessionId都绑定了当前的会话。

换句话说,我们要用requests与chromedriver进行通信,那么我们首先,得生成会话ID,并得到这个ID值,才能够进一步的去访问网页,去发送更多的浏览器操作命令。

3)sessionId从何而来?如何获取?

在selenium当中,通过NEW_SESSION请求来开启会话,chromedriver在收到请求后,在响应数据中,返回本次会话的sessionId

接下来,以百度为例子,使用Jmeter来完成浏览器的操作

1、启动webdriver接口服务
点击运行chromedriver.exe文件(注意:chromedriver需与当前浏览器的版本一致,不一致可自行百度下载与浏览器一致的版本),打开后,默认端口号为9515,请求地址:http://127.0.0.1:9515
在这里插入图片描述

2、新建浏览器会话
Webdriver协议中一般使用POST请求, 数据使用JSON格式发送,即使不需要参数也要传递{}的JSON数据。
新建会话的接口及数据如下,新建会话时同capabilities指定要启动浏览器的选项。

POST http://127.0.0.1:9515/session
{
“capabilities”: {“browserName”: “chrome”}
}
Jmeter中的请求设置如下图所示:
在这里插入图片描述

响应中会返回一个sessionId,如:8ed0492f296082d2e2569cf7f0e637d2,这个sessionId就代表这个浏览器(会话),将其提取出来,以备后续接口使用
在这里插入图片描述

3、打开指定网址
接口及数据为:
POST http://127.0.0.1:9515/session/8ed0492f296082d2e2569cf7f0e637d2/url
{“url”: “https://www.baidu.com/”}

Jmeter中请求如下:
在这里插入图片描述

4、元素定位-输入框
接口及数据为:

POST http://127.0.0.1:9515/session/8ed0492f296082d2e2569cf7f0e637d2/element
{“using”: “css selector”, “value”: “#kw”}
这里的using支持以下5种:

“css selector”
“tag name”
“xpath”
“link text”
“partial link text”
Selenium中的find_element_by_id(), find_element_by_name()和find_element_by_class_name()实际上用的是css selector。

id=“kw”:相当于 css selector “#kw”
class_name=“card”:相当于 css selector “.card”
name=“info”:相当于 css selector “[name=info]”
在这里插入图片描述

执行后响应中会返回元素id,如:eef207e2-59c1-429d-9425-f1fd2da93c35,代表这个元素
在这里插入图片描述

5、输入元素
输入操作接口数据为:

POST http://127.0.0.1:9515/session/8ed0492f296082d2e2569cf7f0e637d2/element/eef207e2-59c1-429d-9425-f1fd2da93c35/value
{“text”: “selenium”}
注意session/后面的是sessionId, element/后面是元素id
在这里插入图片描述

6、元素定位-百度按钮
和第4步元素定位一样,只是请求参数不同
在这里插入图片描述

7、点击百度按钮
点击百度按钮接口操作数据:

POST http://127.0.0.1:9515/session/8ed0492f296082d2e2569cf7f0e637d2/element/eef207e2-59c1-429d-9425-f1fd2da93c35/click
{}
在这里插入图片描述
8、关闭浏览器
关闭浏览器接口操作数据:

DELETE http://127.0.0.1:9515/session/8ed0492f296082d2e2569cf7f0e637d2
{}
注意,这个是delete请求,删除会话,相当于关闭浏览器
在这里插入图片描述
到此,Jmeter模拟selenium操作浏览器的简单演示就结束了


http://chatgpt.dhexx.cn/article/20VZ2uVh.shtml

相关文章

jmeter 安装与配置

目录 一、jmeter 安装配置与启动 1、安装 2、配置 3、启动 (若要求在 Linux 下启动,则用bin --> jmeter.sh 打开) 二、jmeter 插件安装 一、jmeter 安装配置与启动 (需要Java环境) 1、安装 安装与JDK版本对…

JMeter执行顺序与作用域

两个线程组之间是不可以直接传入参数的 执行顺序 一般情况下JMeter按照如下顺序执行∶ 0.配置元件 1.定时器 2.前置处理器 3.取样器 4. 后置处理器 5.断言 6.监听器 一个简单的例子∶ -Test Plan -Thread Group -HTTP Requesto 4  …

Jmeter测试全流程学习教程

Jmeter测试全流程学习教程,本文从jmeter的下载安装到具体的测试流程做了详细的介绍,并在文章中介绍了一些长见问题及处理方法。适合刚刚接触jmeter测试的新手小白参考,若有错误之处,欢迎指正,大神勿喷。 1. 安装与配置 1.1. 下载 官网地址:https://jmeter.apache.org/…

jmeter测试服务器性能测试报告,Jmeter的性能测试

需要分析的系统信息 需要分析的业务信息 性能需求评估 确定性能测试点: 关键业务: 确定被测项目是否属于关键业务,有哪些主要的业务逻辑点,特别是跟交易相关的功能点。例如转账,扣款等接口。如果项目(或功能点)不属于关键业务(或关键业务点) 日请求量: 确定被测项目各功能…

Jemeter 设置中文

1、在jmeter路径下找到文件,bin–>jmeter.bat开启编辑模式 2、找到set JMETER_LANGUAGE-Duser.language“en” -Duser.region"EN"部分; 3、在该部分前后分别添加goto remove_language_reset_bug_4.0和:remove_language_reset_bug_4.0&#…

怎么将fiddler中的接口数据导入jemer直接使用

1、将附件JmeterExproter.dll和JmeterExporter.pdb替换至ImportExport 2、将CustomRules.js替换至Script里 3、进入fiddler,选择任意接口,点击file-export sessions-selected sessions–选择Jmeter 4、导入为.jmx的文件 5、在jmeter中打开即可…

Jmeter命令行运行实例讲解

1. 简介 使用非 GUI 模式&#xff0c;即命令行模式运行 JMeter 测试脚本能够大大缩减所需要的系统资 本文介绍windows下以命令行模式运行的方法。 1.1. 命令介绍 jmeter -n -t <testplan filename> -l <listener filename> 示例&#xff1a; jmeter -n -t testplan…

【Jmeter操作步骤】

1.添加线程组&#xff1a; 测试计划-右键-添加-线程组&#xff0c;设置名称、线程数、Ramp-up时间、循环次数。 2.添加取样器&#xff1a; 线程组-右键-添加-取样器-http请求&#xff0c;设置名称、协议、服务器名或IP、请求类型、路径、请求体&#xff0c;编码utf-8。 3.添加…

windows - Hook技术介绍

hook 介绍 Hook技术被广泛应用于安全的多个领域&#xff0c;比如杀毒软件的主动防御功能&#xff0c;涉及到对一些敏感API的监控&#xff0c;就需要对这些API进行Hook&#xff1b;窃取密码的木马病毒&#xff0c;为了接收键盘的输入&#xff0c;需要Hook键盘消息&#xff1b;甚…

灯塔工厂 | 璞华大数据HawkEye设备数字化管理平台助力建设灯塔工厂

**编辑者按&#xff1a;**灯塔工厂、黑灯工厂、智能工厂、智慧工厂、工业互联网平台、工业4.0、全球化4.0&#xff0c;这些概念在内涵和建设内容上有关联、有交集&#xff0c;或者有相似之处&#xff0c;其核心都是数字化转型。不管是哪一种&#xff0c;璞华大数据HawkEye都可以…

遥感测深方法综述(二)CZMIL 机载LiDAR 测深系统

机载激光雷达测深测量是集激光测距、GNSS定位/姿态测量、航空摄影等多种技术于一体的新型主动机载激光测绘&#xff0c;可应用于海滩和海岸线、浅海编图、海岛、岛礁、水下障碍物的调查&#xff0c;是高效获取高精度近岸海底地形的重要技术&#xff0c;尤其对“人下不去、船上不…

VEH HOOK

相关函数 我们只需要用到 AddVectoredExceptionHandler 设置VEH异常捕获 PVOID WINAPI AddVectoredExceptionHandler(_In_ ULONG FirstHandler,_In_ PVECTORED_EXCEPTION_HANDLER VectoredHandler );ULONG WINAPI RemoveVectoredExceptionHandler(_In_ P…

Docker方式部署Github监控系统Hawkeye

Docker方式部署Github监控系统Hawkeye 依赖 Python 3.x MongoDB > 3.x Flask 创建python3依赖包 yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel 安…

Vue+高德地图API的使用(插件的使用)

接上次地图显示 官方文档&#xff1a;根据自己需求引入想要的插件 在AMapLoader.load中的plugins引入你所需要的插件 //这里是我引入的插件 plugins: ["AMap.ToolBar", //工具条"AMap.Scale", // 比例尺"AMap.Geolocation", //定位"AMap.H…

Hawk-and-Chicken详解

题目描述&#xff1a; Kids in kindergarten enjoy playing a game called Hawk-and-Chicken. But there always exists a big problem: every kid in this game want to play the role of Hawk. So the teacher came up with an idea: Vote. Every child have some nice hand…

Webhook介绍和应用

Webhook概念 Webhook本质上也是API&#xff0c;只不过是反向调用。 Webhook 产生背景 正常调用API是由应用去调用对方服务器的API&#xff0c;为了实现最大程度利用好资源以及并发&#xff0c;通常这个API可能是异步调用&#xff0c;这样&#xff0c;在调用的过程中&#xf…

【论文笔记】—毫米波雷达穿雾式高分辨率成像—Supervised—HawkEye系统—2020-CVPR

题目&#xff1a;Through Fog High-Resolution Imaging Using Millimeter Wave Radar 利用毫米波雷达进行穿雾式高分辨率成像 DOI&#xff1a;10.1109/CVPR42600.2020.01148时间&#xff1a;2020会议&#xff1a;2020-CVPR机构&#xff1a;伊利诺伊大学厄巴纳-香槟分校 论文…

Hi3518ev200:byun hawkeye刷机与配网

背景&#xff1a;从浩峰大佬那拿的boyun hawkeye互联网摄像机&#xff0c;听说是从闲鱼上淘的&#xff0c;被淘汰的产品&#xff1b;买来用来二次开发。 1&#xff09;拆开外面的外壳&#xff0c;然后将串口线引出&#xff0c;接usb转ttl&#xff0c;usb供电&#xff0c;用xsh…

Hawkeye: Towards a Desired Directed Grey-box Fuzzer 论文阅读笔记

中文译名&#xff1a;hawkeye: 需求导向的灰盒模糊测试 作者&#xff1a;Hongxu Chen 单位&#xff1a;南洋理工大学 国家&#xff1a; #新加坡 年份&#xff1a; #2018年 来源&#xff1a; #ccs 关键字&#xff1a; #定向fuzzing #fuzzing #灰盒 代码地址&#xff1a; https:/…

璞华大数据HawkEye设备数字化管理之远程协助功能

应用背景 对于设备制造厂商或者设备使用企业而言&#xff0c;在日常的设备维修管理过程中&#xff0c;多长时间到达现场和多长时间排除故障&#xff0c;是考核工厂维修工和售后维修人员工作绩效的重要指标。 在设备专业程度和精密度不断提高以及国内外新冠疫情的影响下&#x…