【问题标题】:How to set JMeter Vars from within WebDriver Sampler?如何从 WebDriver Sampler 中设置 JMeter Vars?
【发布时间】:2013-11-06 16:27:55
【问题描述】:
// 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 vars...

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

【问题讨论】:

    标签: javascript webdriver automated-tests jmeter jmeter-plugins


    【解决方案1】:

    您可以从 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 指南。

    【讨论】:

      【解决方案2】:

      我相信您需要先将其转换为字符串,根据Using Selenium with JMeter's WebDriver Sampler guide JMeter 变量基本上是字符串,您不能将布尔值放在那里。

      只是替换

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

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

      它应该可以工作。

      【讨论】:

        【解决方案3】:

        它不起作用,因为 WebDriver Sampler 中没有定义“vars”,例如 BeanShell Sampler。

        【讨论】:

          【解决方案4】:

          没有一种干净的方法可以做到这一点,但这是可能的。您可以在 WebDriver 采样器中设置响应标头:

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

          然后您可以使用regular expression extractor 从响应标头中提取数据。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2016-11-06
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2019-07-06
            • 1970-01-01
            相关资源
            最近更新 更多