Java JMeter中的网站URL正在重定向,而不是加载测试URL
我正在学习JMeter。在我的作业中,我需要加载一个测试URL,但测试URL实际上重定向到另一个URL。当我尝试检查HTML格式的“查看结果树”时,我没有看到任何加载的内容,但“采样器结果”是可以的 我得到以下响应数据Java JMeter中的网站URL正在重定向,而不是加载测试URL,java,jmeter,load,url-redirection,load-testing,Java,Jmeter,Load,Url Redirection,Load Testing,我正在学习JMeter。在我的作业中,我需要加载一个测试URL,但测试URL实际上重定向到另一个URL。当我尝试检查HTML格式的“查看结果树”时,我没有看到任何加载的内容,但“采样器结果”是可以的 我得到以下响应数据 <html> <head> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.2/jquery.min.js"></script> </head>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.2/jquery.min.js"></script>
</head>
<script type="text/javascript">
var externalURL = "cat04-partner-external.napgsys.com".toLowerCase();
internalUrl = "cat04-partner.napgsys.com".toLowerCase();
$(document).ready(function () {
if(window.location.href.indexOf(externalURL) > -1) {
window.location.href = window.location.href +"sso/login/#/login2";
}
else{
window.location.href = window.location.href +"sso/login/#/login";
}
});
</script>
<!--<META http-equiv="refresh" content="0;URL=/sso">-->
</html>
var externalURL=“cat04 partner external.napgsys.com”.toLowerCase();
internalUrl=“cat04 partner.napgsys.com”.toLowerCase();
$(文档).ready(函数(){
if(window.location.href.indexOf(externalURL)>-1){
window.location.href=window.location.href+“sso/login/#/login2”;
}
否则{
window.location.href=window.location.href+“sso/login/#/login”;
}
});
我尝试了“自动重定向”和“跟随重定向”,但没有任何帮助。
如何确保它重定向到正确的URL,我可以在HTML中验证是否加载了正确的测试URL。您尝试的选项(“自动重定向”和“遵循重定向”)适用于在服务器端重定向的应用程序,但您的应用程序使用JavaScript代码在客户端重定向,虽然JMeter的HTTP采样器在HTTP级别上运行,但不运行:
JMeter是否处理动态页面(例如Javascript和小程序)?
否。JMeter不处理嵌入HTML页面中的Javascript或小程序
JMeter可以下载相关资源(如果设置了正确的选项,则会自动下载一些嵌入式资源),但它不会处理HTML并执行任何Javascript函数
因此,您有3种选择:
- 选项1:假装发生重定向:
- 验证返回的响应是否包含重定向代码(例如使用RegEx后处理器)
- 向重定向的链接发出下一个请求,就像发生了重定向一样李>
或login
,或吞吐量控制器,将一定比例的用户重定向到login2
,其余用户重定向到login
) 一些人可能会意识到的缺点是,如果您还想测试JS代码,您就不会这么做。但是JMeter通常不用于客户端测试,所以这并不是这种方法的缺点,而是使用JMeter进行功能测试的缺点 以下是此类计划的一个示例: 在第一个请求之后,我们检查响应页面是否包含登录重定向(这是检查它的一种方法,当然还有许多其他方法)。如果成功,则认为请求成功 然后,随机控制器确保每次我们选择login2
或login
。随机。当然,您可以根据需要使用任何其他控制器,而不是随机控制器login2
- 选项2:使用Selenium WebDriver采样器
基本上,您将创建:
Web驱动程序采样器在浏览器(客户端)上自动执行和收集性能指标。到目前为止,大部分性能测试都是在服务器端进行的。然而,随着技术的进步,HTML5、JS和CSS的改进,越来越多的逻辑和行为被推到客户端。这增加了网站/webapp的整体感知性能,但JMeter中没有此指标。增加浏览器总体执行时间的因素可能包括:
- 客户端Javascript执行-例如AJAX、JS模板
- CSS转换-例如3D矩阵变换、动画
- 第三方插件-如类似Facebook、双击广告、网站分析等
- 选项3:将两种方法结合使用 大多数线程都运行HTTP采样器,很少有线程使用Selenium采样器测量最终用户体验。这提供了最好的覆盖范围,但当然需要在创建和维护它们方面进行更大的投资