How to set JMeter Vars from within WebDriver Sampler?

时光怂恿深爱的人放手 提交于 2019-12-31 02:55:07

问题


// 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());

The last line above doesn't work.

I can successfully use CSS/JQuery Extractor to add values to JMeter vars...

But how can I do the same from within WebDriver Sampler?


回答1:


You can access JMeter API classes from within the WebDriver Sampler, it's implemented as JSR 223 standard for instance you can refer JMeter Variables (aka vars as follows)

In the WebDriver Sampler:

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

vars.put('foo','bar')

Now you have ${foo} variable with the value of bar

See The WebDriver Sampler: Your Top 10 Questions Answered guide for more WDS sampler tips and tricks.




回答2:


I believe that you need to cast it to String first, as per Using Selenium with JMeter's WebDriver Sampler guide JMeter Variables are basically Strings and you can't put boolean there.

just replace

vars.put("reserveASpotButtonIsEnabled", reserveASpotButton.isEnabled());

with

vars.put("reserveASpotButtonIsEnabled", reserveASpotButton.isEnabled().toString());

And it should work.




回答3:


It won't work because 'vars' in not defined in WebDriver Sampler as in for instance BeanShell Sampler.




回答4:


There isn't a clean way to do this, but it is possible. You can set the response headers in your WebDriver sampler:

WDS.sampleResult.setResponseHeaders(reserveASpotButton.isEnabled())

Then you can use a regular expression extractor to pull the data from the response headers.



来源:https://stackoverflow.com/questions/19817398/how-to-set-jmeter-vars-from-within-webdriver-sampler

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!