我已经编写了jMeter测试用例,它有登录请求和一些对表的POST请求。 现在,我要测量页面的渲染时间(POSTS的响应)。 我想使用硒,所以我读: Running Selenium scripts with JMeter
问题是我希望Selenium使用与jMeter已经处理过的登录相同的会话(换句话说:已经登录)。 我该如何存档?
我的TestPlan:
[更新] @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();
{UPDATE 2}
好吧,我认为所有线程组中的Cookies都存在问题。 我的每个请求都没有[cookies]:
答案 0 :(得分:1)
为了通过“会话”,您需要将JMeter的HTTP Cookie Manager中的所有cookie复制到Selenium会话中。
这可以直接在WebDriver Sampler中完成,如下所示:
将以下代码放入“脚本”区域
vars.putObject('cookieManager', sampler.getCookieManager())
它将HTTP Cookie管理器的当前状态存储到JMeter Variables
在WebDriver采样器中,您可以使用以下方法使用WDS.browser.manage().addCookie()函数从HTTP Cookie管理器复制cookie并将其添加到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)
}