JMeter Webdriver 采样器中的等待时间问题
Wait time issue in JMeter Webdriver sampler
我正在使用 JMeter Webdriver 采样器来测量应用程序 UI 响应时间。我面临等待功能的问题。例如,登录页面加载时间为 10 到 120 秒。所以我在 Webdriver sampler 的登录页面有以下代码用于页面加载检查。
var ui=JavaImporter(org.openqa.selenium.support.ui)
var wait=new support_ui.WebDriverWait(WDS.browser,120)
wait.until(ui.ExpectedConditions.visibilityOfElementLocated(pkg.By.className('logout-btn-hover')))
问题是即使在页面完全加载后,JMeter 仍在等待执行下一步操作。如果我减少 120,这个等待时间会减少 secs.But 有时应用程序也需要 120 秒来加载所以我需要保持 120 秒。
采样器完成其操作后,我会将时间写入日志文件。由于等待时间问题,我无法正确计算时间。
您的脚本中至少有 2 个错误,它应该类似于:
var ui=JavaImporter(org.openqa.selenium.support.ui)
var wait=new ui.WebDriverWait(WDS.browser,120)
wait.until(ui.ExpectedConditions.visibilityOfElementLocated(org.openqa.selenium.By.className('logout-btn-hover')))
检查 jmeter.log file 是否有任何可疑的条目,特别是像这样的条目:
ERROR c.g.j.p.w.s.WebDriverSampler: Expected condition failed: waiting for visibility of element located by By.className: logout-btn-hover (tried for 120 second(s) with 500 milliseconds interval)
- Double check your CSS selector
考虑重构您的代码以在循环中查找注销按钮 (?),并对每个步骤进行详细日志记录。示例代码:
var pkg = JavaImporter(org.openqa.selenium)
WDS.sampleResult.sampleStart()
WDS.browser.get('http://example.com')
var start = new Date().getTime()
var attempt = 1
while (new Date().getTime() - start < 5000) {
try {
var logout = WDS.browser.findElement(pkg.By.className('logout-btn-hover'))
WDS.log.info('Element found')
break
}
catch (err) {
WDS.log.info('Attempt # ' + attempt + ', Element not found')
java.lang.Thread.sleep(1000)
attempt++
}
}
WDS.sampleResult.sampleEnd()
未找到元素时的示例输出:
找到元素时的示例输出:
查看 The WebDriver Sampler: Your Top 10 Questions Answered 文章,了解有关在 JMeter 脚本中使用 WebDriver 采样器的更多信息。
我正在使用 JMeter Webdriver 采样器来测量应用程序 UI 响应时间。我面临等待功能的问题。例如,登录页面加载时间为 10 到 120 秒。所以我在 Webdriver sampler 的登录页面有以下代码用于页面加载检查。
var ui=JavaImporter(org.openqa.selenium.support.ui)
var wait=new support_ui.WebDriverWait(WDS.browser,120)
wait.until(ui.ExpectedConditions.visibilityOfElementLocated(pkg.By.className('logout-btn-hover')))
问题是即使在页面完全加载后,JMeter 仍在等待执行下一步操作。如果我减少 120,这个等待时间会减少 secs.But 有时应用程序也需要 120 秒来加载所以我需要保持 120 秒。
采样器完成其操作后,我会将时间写入日志文件。由于等待时间问题,我无法正确计算时间。
您的脚本中至少有 2 个错误,它应该类似于:
var ui=JavaImporter(org.openqa.selenium.support.ui) var wait=new ui.WebDriverWait(WDS.browser,120) wait.until(ui.ExpectedConditions.visibilityOfElementLocated(org.openqa.selenium.By.className('logout-btn-hover')))
检查 jmeter.log file 是否有任何可疑的条目,特别是像这样的条目:
ERROR c.g.j.p.w.s.WebDriverSampler: Expected condition failed: waiting for visibility of element located by By.className: logout-btn-hover (tried for 120 second(s) with 500 milliseconds interval)
- Double check your CSS selector
考虑重构您的代码以在循环中查找注销按钮 (?),并对每个步骤进行详细日志记录。示例代码:
var pkg = JavaImporter(org.openqa.selenium) WDS.sampleResult.sampleStart() WDS.browser.get('http://example.com') var start = new Date().getTime() var attempt = 1 while (new Date().getTime() - start < 5000) { try { var logout = WDS.browser.findElement(pkg.By.className('logout-btn-hover')) WDS.log.info('Element found') break } catch (err) { WDS.log.info('Attempt # ' + attempt + ', Element not found') java.lang.Thread.sleep(1000) attempt++ } } WDS.sampleResult.sampleEnd()
未找到元素时的示例输出:
找到元素时的示例输出:
查看 The WebDriver Sampler: Your Top 10 Questions Answered 文章,了解有关在 JMeter 脚本中使用 WebDriver 采样器的更多信息。