当前位置: 首页 > 知识库问答 >
问题:

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

竺承望
2023-03-14

我使用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个答案

陈宜修
2023-03-14

>

  • 脚本中至少有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文件中的任何可疑条目,特别是以下内容:

    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)
    

    考虑重构代码以查找注销按钮(?)在一个循环中,每个步骤都有详细的日志记录。示例代码:

    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()
    

    https://imgs.xnip.cn/cj/n/3/3419ac26-ca20-46a6-a320-ec6ed6c438aa.png" width="100%" height="100%" />

    有关在JMeter脚本中使用WebDriver采样器的更多信息,请参阅WebDriver采样器:您回答的10个问题。

  •  类似资料:
    • 我们正在使用ApacheHttpClient和PoolighttpClientConnectionManager,并创建一个连接池,每个路由大小分别为200和200(调用同一个endpoint)。 HTTPClient被包装在一个单例类中(因此HTTPClient被共享)。然后,我使用它来发出GET请求,并用状态代码和主体进行响应。 然而,机器处于高CPU负载下,我们在netstat中遇到了大约3

    • 我创建了一个定制的jmeter java采样器,它在循环中向HTTPendpoint发送请求并解析响应。希望多个线程在单个线程组中运行此采样器。 有人建议,我可以在安装线程组中使用beanshell采样器从csv读取,创建hashmap并使用之类的内容将其存储在JMeter属性中。有人能告诉我这是否是一个合理的方法吗?如果是,我如何访问自定义采样器中的特定JMeter属性? 我找到了这个答案:使用

    • 我在JSR223采样器中有以下代码,我得到SSL证书错误。有什么办法可以做到禁用吗? JSR223脚本中的问题JSR223采样器,消息:javax.script.scriptException:javax.net.ssl.sslhandShakeException:sun.security.validator.validatoreXception:PKIX路径构建失败

    • 之前介绍过的所有阻塞调用,将会阻塞一段不确定的时间,将线程挂起直到等待的事件发生。在很多情况下,这样的方式很不错,但是在其他一些情况下,你就需要限制一下线程等待的时间了。这允许你发送一些类似“我还存活”的信息,无论是对交互式用户,或是其他进程,亦或当用户放弃等待,你可以按下“取消”键直接终止等待。 介绍两种可能是你希望指定的超时方式:一种是“时延”的超时方式,另一种是“绝对”超时方式。第一种方式,

    • (问题从Jmeter protobuf测试中继续。无法读取protobuf消息)我正在通过protobuf协议测试应用程序。最初我使用HTTP采样器,但在将二进制数据保存为字符串时遇到了问题。解决方案是将Beanshell采样器与HTTPClient一起使用,并将Body: 因为我试图提供几千个并发用户的高负载,所以我开始使用JSR223+Grovy sampler而不是Beanshell sam

    • 问题内容: 我想知道WebDriver等待超时和隐式等待超时之间的技术差异。 问题答案: 如文档中所述: 在内部设置将用于所有连续搜索的超时。如果找不到该元素,它将尝试在指定的时间内反复查找该元素。它仅执行此操作,不能强制执行其他任何操作- 它等待元素显示。 ,或者只是您用于特定搜索的一次计时器。它具有更大的可扩展性,意味着您可以将其设置为等待可能需要的任何条件。通常,您可以使用一些预构建的元素来