Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Wait time issue in JMeter Webdriver sampler

I am using JMeter Webdriver sampler for the application UI response time measurement. I am facing issue with the wait function. For example the login page loads between 10 to 120 secs. So I have the following code for the login page in Webdriver sampler for the page load check.

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

The issue is even after the page load completely, JMeter is still waiting to perform the next action. This waiting time will reduce if I reduce the 120 secs.But sometimes the application will take 120 secs to load also so I need to keep 120 secs.

I am writing the time to a log file once the sampler completes its action. Because of the wait time issue I am not able to calculate time properly.

like image 356
RJM Avatar asked Jan 20 '26 10:01

RJM


1 Answers

  1. There are at least 2 errors in your script, it should look something like:

    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. Check out jmeter.log file for any suspicious entries, in particular for something like:

    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. Consider refactoring your code to look for the logout button(?) in a loop with verbose logging for each step. Sample code:

    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()
    
    • Example output when the element is not found:

      enter image description here

    • Example output when the element is found:

      enter image description here

Check out The WebDriver Sampler: Your Top 10 Questions Answered article for more information on using WebDriver sampler in JMeter scripts.

like image 130
Dmitri T Avatar answered Jan 23 '26 08:01

Dmitri T



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!