我的Jmeter脚本的SetUp部分包含在生成实际负载之前绕过Web应用程序的登录页面的步骤。作为这些步骤的结果,服务器设置了证明成功登录的特定cookie。
为此,我的脚本应该执行由服务器响应注入的Javascript函数。由于这是一次性程序,我使用WebDriver并在浏览器实例中执行Javascript。
但是我绝对不能像加载线程的一部分那样做,因为WebDriver对于性能测试来说不是一个好主意(根本不是)。
然而,我仍然想知道它是一种在不创建浏览器实例的情况下计算JS的方法,因为我的JS脚本只是算术计算(尽管很复杂)。所以,
提前感谢任何想法。
答案 0 :(得分:9)
您可以使用JSR223 Sampler,从“语言”下拉菜单中选择javascript
,然后将代码放入“脚本”区域
您可以使用WebDriver Sampler对浏览器中的所有线程使用单个浏览器实例,例如:
var ctx = org.apache.jmeter.threads.JMeterContextService.getContext()
var vars = ctx.getVariables();
for (var i=0; i< THREADS_NUMBER; i++) {
WDS.browser.manage().deleteAllCookies()
WDS.browser.get('LOGIN_PAGE_URL')
var cookie = WDS.browser.manage().getCookieNamed("COOKIE_NAME").getValue();
vars.put("cookie" + i, cookie);
}
它将生成JMeter变量,如:
cookie1=foo
cookie2=bar
etc.
因此,您可以在需要时使用__threadNum()函数来引用变量值,如:
${__evalVar(cookie${__threadNum})}
有关使用WebDriver Sampler的更多信息,请参阅The WebDriver Sampler: Your Top 10 Questions Answered指南。