【问题标题】:jMeter - Selenium integrationjMeter - 硒集成
【发布时间】:2019-05-27 20:27:42
【问题描述】:

我已经编写了 jMeter 测试用例,它有登录请求和一些对我的表的 POST 请求。 现在我想测量页面的渲染时间(帖子的响应)。 我想使用 Selenium,所以我读到: Running Selenium scripts with JMeter

问题是我希望 Selenium 使用与 jMeter 已经处理的登录相同的会话(换句话说:已经登录)。 我该如何存档?

我的测试计划:

[更新] @Dmitri T

感谢您的回答!我按照你的建议做了,但还是不行。也许我做错了什么,但在 Selenium 打开浏览器后仍然会进入登录页面。我将 JSR223 PostProcessor 放在我的 LOGIN POST 请求下,这是我的 WebDriver Sampler:

var pkg = JavaImporter(org.openqa.selenium);
var support_ui = JavaImporter(org.openqa.selenium.support.ui.WebDriverWait);
var wait = new support_ui.WebDriverWait(WDS.browser, 5000);

WDS.sampleResult.sampleStart(); 
WDS.sampleResult.getLatency();
WDS.log.info("Sample started");

WDS.browser.get(WDS.parameters);
WDS.log.info("LOGGING INTO: " + (WDS.parameters))

var cookieManager = WDS.vars.getObject('cookieManager')

for (var i=0; i < cookieManager.getCookieCount(); i++) {
    var jmeterCookie = cookieManager.getCookies().get(i)
    var seleniumCookie =  new org.openqa.selenium.Cookie(jmeterCookie.name, jmeterCookie.value, jmeterCookie.domain, jmeterCookie.path, java.util.Date.from(java.   time.Instant.ofEpochMilli(jmeterCookie.expiresMillis)), jmeterCookie.secure)
    WDS.browser.manage().addCookie(seleniumCookie)
}

java.lang.Thread.sleep(5000)

WDS.sampleResult.sampleEnd();

{更新 2}

好的,我认为所有线程组中的 Cookie 都有问题。 我对每个请求都有 [没有 cookie]:

【问题讨论】:

    标签: selenium jmeter integration


    【解决方案1】:

    为了传递“会话”,您需要将 JMeter 的 HTTP Cookie Manager 中的所有 cookie 复制到 Selenium 会话中。

    这可以直接在 WebDriver Sampler 中完成,如下所示:

    1. JSR223 PostProcessor 添加为要复制哪个会话的请求的子项
    2. 将以下代码放入“脚本”区域

      vars.putObject('cookieManager', sampler.getCookieManager())
      

      它将HTTP Cookie管理器的当前状态存储到JMeter Variables

    3. 在 WebDriver Sampler 中,您可以从 HTTP Cookie 管理器复制 cookie,并使用 WDS.browser.manage().addCookie() 函数将它们添加到 WebDriver 实例,如下所示:

      var cookieManager = WDS.vars.getObject('cookieManager')
      
      for (var i=0; i < cookieManager.getCookieCount(); i++) {
          var jmeterCookie = cookieManager.getCookies().get(i)
          var seleniumCookie =  new org.openqa.selenium.Cookie(jmeterCookie.name, jmeterCookie.value, jmeterCookie.domain, jmeterCookie.path, java.util.Date.from(java.time.Instant.ofEpochMilli(jmeterCookie.expiresMillis)), jmeterCookie.secure)
          WDS.browser.manage().addCookie(seleniumCookie)
      }
      

    【讨论】:

      猜你喜欢
      • 2011-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多