rookie
rookie

Reputation: 401

Headless browser using jmeter

I tried to use (jp@gc - HtmlUnit Driver Config) to create a headless browser test using jmeter, but I get this error

Response message: com.gargoylesoftware.htmlunit.ScriptException: ReferenceError: "getComputedStyle" is not defined.

I read online and it suggest that jp@gc - HtmlUnit Driver Config doesn't support javascript. Is there a way I can fix this via jmeter? or is there any other option to do headless browser testing. I have linux server as load injector

Update:

I have a webdriver sampler to open google page

WDS.sampleResult.sampleStart() WDS.browser.get('http://google.com') WDS.sampleResult.sampleEnd()

and have downloaded Phanton JS, but when I run it it doesn't show anything on the report. Should I add any other config?

enter image description here

Upvotes: 1

Views: 3175

Answers (1)

Hassen Bennour
Hassen Bennour

Reputation: 3913

HtmlUnit do not support very well JS.

I done many tests and used each one and i can say that PHANTOMJS is the best one with good support of all JS/CSS... have a beautiful renderer to have nice screenshots. by code you can use it like this (you can download it from here http://phantomjs.org/download.html (phantomjs-1.9.8 is very stable)):

Capabilities caps = new DesiredCapabilities();
                ((DesiredCapabilities) caps).setJavascriptEnabled(true);                
                ((DesiredCapabilities) caps).setCapability("takesScreenshot", true);  
                ((DesiredCapabilities) caps).setCapability(
                        PhantomJSDriverService.PHANTOMJS_EXECUTABLE_PATH_PROPERTY,
                        "your custom path\\phantomjs.exe"
                    );
 WebDriver   driver = new  PhantomJSDriver(caps);

If you want to do that via JMeter GUI, you need to add before your Logic Controller an element JSR223 Sampler JSR223_Sampler and inside the script panel :

org.openqa.selenium.Capabilities caps = new org.openqa.selenium.remote.DesiredCapabilities();
        ((org.openqa.selenium.remote.DesiredCapabilities) caps).setJavascriptEnabled(true);
        ((org.openqa.selenium.remote.DesiredCapabilities) caps).setCapability("takesScreenshot", true);
        ((org.openqa.selenium.remote.DesiredCapabilities) caps).setCapability(
                org.openqa.selenium.phantomjs.PhantomJSDriverService.PHANTOMJS_EXECUTABLE_PATH_PROPERTY,
                "your custom path\\phantomjs.exe");
        org.openqa.selenium.WebDriver driver = new org.openqa.selenium.phantomjs.PhantomJSDriver(caps);
        org.apache.jmeter.threads.JMeterContextService.getContext().getCurrentSampler().getThreadContext()
                .getVariables().putObject(com.googlecode.jmeter.plugins.webdriver.config.WebDriverConfig.BROWSER, driver);

Do not hesitate if you need more informations.

Upvotes: 1

Related Questions