如何从 WebDriver Sampler 中设置 JMeter Vars?

Din*_*ent 2 javascript automated-tests webdriver jmeter jmeter-plugins

// 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());
Run Code Online (Sandbox Code Playgroud)

上面的最后一行不起作用。

我可以成功使用 CSS/JQuery Extractor 向 JMeter 变量添加值...

但是我怎样才能在 WebDriver Sampler 中做同样的事情呢?

Dmi*_*i T 5

您可以从 WebDriver Sampler 中访问 JMeter API 类,它是作为JSR 223 标准实现的,例如您可以参考 JMeter 变量(又名vars如下)

在 WebDriver 采样器中:

var ctx = org.apache.jmeter.threads.JMeterContextService.getContext()
var vars = ctx.getVariables();

vars.put('foo','bar')
Run Code Online (Sandbox Code Playgroud)

现在您的${foo}变量值为bar

有关更多 WDS 采样器提示和技巧,请参阅WebDriver 采样器:已解答的 10 个热门问题指南。