JMeter Webdriver采样器中的等待时间问题

时间:2018-12-28 12:19:54

标签: jmeter webdriver webdriverwait

我正在使用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秒,此等待时间将减少。但是有时应用程序也需要120秒才能加载,因此我需要保持120秒。

采样器完成操作后,我会将时间写入日志文件。由于等待时间的问题,我无法正确计算时间。

1 个答案:

答案 0 :(得分:1)

  1. 您的脚本中至少有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')))
    
  2. 检出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)
    
  3. Double check your CSS selector
  4. 考虑将代码重构为在循环中查找注销按钮(?),并在每个步骤中进行详细的日志记录。示例代码:

    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()
    
    • 找不到元素时的示例输出:

      enter image description here

    • 找到元素后的示例输出:

      enter image description here

查看The WebDriver Sampler: Your Top 10 Questions Answered文章,了解有关在JMeter脚本中使用WebDriver采样器的更多信息。