首页 > 解决方案 > Websocket调用上的Selenium Jmeter差异

问题描述

我正在研究 Selenium 和 JMeter 之间的差异,我偶然发现了以下关于 Selenium 的声明:

即使 WebSocket 可能被封装到 Web 会话中并影响浏览器,用户/Selenium 也不会意识到这一点。因此,我们将使用 JMeter 来测试 WebSocket。

这让我感到困惑,因为即使 Selenium 无法检测到该特定场景,Selenium 仍然使用像 JAVA 这样的编程语言,因此您仍然可以使用 Java 来完成 JMeter 在这种情况下所做的相同事情。或者我在这里错过了什么?

标签: seleniumjmeter

解决方案


我不知道你在读什么,但是我建议停止引用这个来源,因为他们并没有真正意识到他们在说什么。

根据WebSocket API文档:

WebSocket API 是一种先进的技术,可以在用户浏览器和服务器之间打开双向交互通信会话。使用此 API,您可以向服务器发送消息并接收事件驱动的响应,而无需轮询服务器以获取回复。

Selenium浏览器自动化框架,因此您可以“免费”获得此 WebSocket API 支持。如果您需要执行一些自定义用例,您可以使用JavascriptExecutor调用WebSocket对象函数。

当谈到JMeter时:

JMeter 不是浏览器,它在协议级别工作。就 Web 服务和远程服务而言,JMeter 看起来像一个浏览器(或者更确切地说,是多个浏览器);但是 JMeter 并不执行浏览器支持的所有操作。特别是,JMeter 不执行 HTML 页面中的 Javascript。它也不像浏览器那样呈现 HTML 页面(可以将响应视为 HTML 等,但时间不包含在任何示例中,并且一次只显示一个线程中的一个示例)。

因此 JMeter 不会触发任何与 WebSocket 相关的事件,除非您使用插件并手动打开连接、发送消息、读取响应等。


推荐阅读