// I had previously used a CSS/JQuery extractor to get a URL from a page and add it to JMeter vars - accessing it here
var pageURL = "${valueFromJmeterVars}";
// navigate to that url
WDS.browser.get(pageURL);
// selecting an element
var button = wait.until(pkg.ExpectedConditions.visibilityOfElementLocated(pkg.By.cssSelector(buttonLocator)));
// log desired boolean value to console, so I can confirm is as expected
WDS.log.info('reserveASpotButton:' + reserveASpotButton.isEnabled());
// add my boolean to JMeter vars, so I can access later from beanshell post-processor (where I do my assertions)
vars.put("reserveASpotButtonIsEnabled", reserveASpotButton.isEnabled());
上面的最后一行不起作用。
我可以成功使用CSS / JQuery Extractor将值添加到JMeter变量...
但是我如何从WebDriver Sampler中做同样的事情呢?
答案 0 :(得分:3)
您可以从WebDriver Sampler中访问JMeter API类,它实现为JSR 223 standard,例如您可以引用JMeter变量(又名vars
如下)
在WebDriver采样器中:
var ctx = org.apache.jmeter.threads.JMeterContextService.getContext()
var vars = ctx.getVariables();
vars.put('foo','bar')
现在您的${foo}
变量的值为bar
有关更多WDS采样器提示和技巧,请参阅The WebDriver Sampler: Your Top 10 Questions Answered指南。
答案 1 :(得分:1)
我认为你需要首先将它转换为String,因为Using Selenium with JMeter's WebDriver Sampler guide JMeter变量基本上是字符串,你不能把布尔放在那里。
只需替换
vars.put("reserveASpotButtonIsEnabled", reserveASpotButton.isEnabled());
与
vars.put("reserveASpotButtonIsEnabled", reserveASpotButton.isEnabled().toString());
它应该有效。
答案 2 :(得分:1)
它不起作用,因为'vars'未在WebDriver Sampler中定义,例如BeanShell Sampler。
答案 3 :(得分:0)
没有一种干净的方法可以做到这一点,但这是可能的。您可以在WebDriver采样器中设置响应标头:
WDS.sampleResult.setResponseHeaders(reserveASpotButton.isEnabled())
然后,您可以使用regular expression extractor从响应标头中提取数据。