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

标签 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. 您的脚本中至少有 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. checkout 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 采样器的更多信息。

关于jmeter - JMeter Webdriver 采样器中的等待时间问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53958524/

相关文章:

java - 如何使用 selenium xpath 等待页面中的两个元素之一

oracle - 如何使用 jmeter 测试具有 sys_refcursor 返回类型的 Oracle 存储过程?

java - JVM 应该已经退出但没有

selenium webdriver : org. openqa.selenium.ElementNotVisibleException:元素当前不可见,因此可能无法与之交互

c# - 如何在 c# 中使用 selenium2 webdriver 单击特定坐标?

java - thread.sleep() 的替代方案 - 亚马逊 selenium webdriver 添加到购物车忽略保险对话框

java - Selenium隐式和显式等待,未找到超时异常元素

sockets - Jmeter错误: Java.net.SocketException : Connection reset at java.net.SocketInputStream.read(未知来源)位于

java - Jmeter TCP Sampler 发送请求无需等待应答

google-chrome - Protractor woant 运行我的脚本