Jmeter- Webdriver can not load web page on Chrome - jmeter

I wrote a jmeter - webdriver after a simple sample from the web. Load test should load Chrome and open a specific page. Chrome opens, but page is not displayed,jmeter returns error.
These are specifications:
os.name: 'Windows Server 2012 R2', os.arch: 'amd64', os.version: '6.3', java.version: '1.8.0_144'
Chrome version: 65 and higher versions
Jmeter: 5.1.1, selenium-chrome-driver-3.14.0.jar,selenium-java-3.14.0.jar
Thread Group
jp#gc - Chrome Driver Config
path to Chrome driver : C:\Program Files (x86)\Google\Chrome\Application\chrome.exe
jp#gc - WebDriver Sampler
WDS.sampleResult.sampleStart()
WDS.browser.get('http://www.jmeter-plugins.org')
WDS.sampleResult.sampleEnd()
I expect to view page in the Chrome, only Chrome is opened and specific page is not loaded .
Thank you for you time to helping solving my issue.
Jmeter logs error:
Driver info: driver.version: unknown
at org.openqa.selenium.remote.service.DriverService.waitUntilAvailable(DriverService.java:193) ~[selenium-remote-driver-3.14.0.jar:?]
at org.openqa.selenium.remote.service.DriverService.start(DriverService.java:179) ~[selenium-remote-driver-3.14.0.jar:?]
at com.googlecode.jmeter.plugins.webdriver.config.ChromeDriverConfig.getThreadService(ChromeDriverConfig.java:93) ~[jmeter-plugins-webdriver-3.0.jar:?]
at com.googlecode.jmeter.plugins.webdriver.config.ChromeDriverConfig.createBrowser(ChromeDriverConfig.java:73) ~[jmeter-plugins-webdriver-3.0.jar:?]
at com.googlecode.jmeter.plugins.webdriver.config.ChromeDriverConfig.createBrowser(ChromeDriverConfig.java:21) ~[jmeter-plugins-webdriver-3.0.jar:?]
at com.googlecode.jmeter.plugins.webdriver.config.WebDriverConfig.getPreparedBrowser(WebDriverConfig.java:233) ~[jmeter-plugins-webdriver-3.0.jar:?]
at com.googlecode.jmeter.plugins.webdriver.config.WebDriverConfig.threadStarted(WebDriverConfig.java:220) ~[jmeter-plugins-webdriver-3.0.jar:?]
at org.apache.jmeter.threads.JMeterThread$ThreadListenerTraverser.addNode(JMeterThread.java:762) [ApacheJMeter_core.jar:5.1.1 r1855137]
at org.apache.jorphan.collections.HashTree.traverseInto(HashTree.java:994) [jorphan.jar:5.1.1 r1855137]
at org.apache.jorphan.collections.HashTree.traverse(HashTree.java:977) [jorphan.jar:5.1.1 r1855137]
at org.apache.jmeter.threads.JMeterThread.threadStarted(JMeterThread.java:730) [ApacheJMeter_core.jar:5.1.1 r1855137]
at org.apache.jmeter.threads.JMeterThread.initRun(JMeterThread.java:718) [ApacheJMeter_core.jar:5.1.1 r1855137]
at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:249) [ApacheJMeter_core.jar:5.1.1 r1855137]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_144]
Caused by: org.openqa.selenium.net.UrlChecker$TimeoutException: Timed out waiting for [http://localhost:20883/status] to be available after 20002 ms
at org.openqa.selenium.net.UrlChecker.waitUntilAvailable(UrlChecker.java:100) ~[selenium-remote-driver-3.14.0.jar:?]
at org.openqa.selenium.remote.service.DriverService.waitUntilAvailable(DriverService.java:188) ~[selenium-remote-driver-3.14.0.jar:?]
... 13 more
Caused by: java.util.concurrent.TimeoutException
at java.util.concurrent.FutureTask.get(Unknown Source) ~[?:1.8.0_144]
at com.google.common.util.concurrent.SimpleTimeLimiter.callWithTimeout(SimpleTimeLimiter.java:156) ~[guava-25.0-jre.jar:?]
at org.openqa.selenium.net.UrlChecker.waitUntilAvailable(UrlChecker.java:75) ~[selenium-remote-driver-3.14.0.jar:?]
at org.openqa.selenium.remote.service.DriverService.waitUntilAvailable(DriverService.java:188) ~[selenium-remote-driver-3.14.0.jar:?]
... 13 more
2019-05-08 11:20:03,732 ERROR o.a.j.t.JMeterThread: Error while processing sampler: 'jp#gc - WebDriver Sampler'.
java.lang.IllegalArgumentException: Browser has not been configured. Please ensure at least 1 WebDriverConfig is created for a ThreadGroup.
at com.googlecode.jmeter.plugins.webdriver.sampler.WebDriverSampler.sample(WebDriverSampler.java:62) ~[jmeter-plugins-webdriver-3.0.jar:?]
at org.apache.jmeter.threads.JMeterThread.doSampling(JMeterThread.java:622) ~[ApacheJMeter_core.jar:5.1.1 r1855137]
at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:546) ~[ApacheJMeter_core.jar:5.1.1 r1855137]
at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:486) [ApacheJMeter_core.jar:5.1.1 r1855137]
at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:253) [ApacheJMeter_core.jar:5.1.1 r1855137]

Please download the chrome driver from the below link as per your browser version and if not available then update chrome browser:-
http://chromedriver.chromium.org/downloads
Once you have the "chromedriver.exe" then change the path in Chrome driver config
jp#gc - Chrome Driver Config
ex:- path to Chrome driver : D:\ChromeDriver\chromedriver.exe
Hope this solves the issue.

Related

Starting multiple firefox instance in jMeter, some of them don't operate

I start a load test for a web application with 25 threads in 60 seconds in 1 loop. The test consist of some selenium commands. When the test start jMeter start 25 Firefox windows but some Firefox windows do not execute the commands and remain blank.
2021-09-24 12:03:28,659 ERROR o.a.j.t.JMeterThread: Error calling threadStarted
org.openqa.selenium.TimeoutException: Impossibile stabilire la connessione. Rifiuto persistente del computer di destinazione. (os error 10061)
Build info: version: '3.14.0', revision: 'aacccce0', time: '2018-08-02T20:19:58.91Z'
System info: host: 'TESEO-TEST', ip: '192.168.80.52', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_181'
Driver info: driver.version: FirefoxDriver
remote stacktrace:
at sun.reflect.GeneratedConstructorAccessor58.newInstance(Unknown Source) ~[?:?]
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) ~[?:1.8.0_181]
at java.lang.reflect.Constructor.newInstance(Unknown Source) ~[?:1.8.0_181]
at org.openqa.selenium.remote.W3CHandshakeResponse.lambda$new$0(W3CHandshakeResponse.java:57) ~[selenium-remote-driver-3.14.0.jar:?]
at org.openqa.selenium.remote.W3CHandshakeResponse.lambda$getResponseFunction$2(W3CHandshakeResponse.java:104) ~[selenium-remote-driver-3.14.0.jar:?]
at org.openqa.selenium.remote.ProtocolHandshake.lambda$createSession$0(ProtocolHandshake.java:122) ~[selenium-remote-driver-3.14.0.jar:?]
at java.util.stream.ReferencePipeline$3$1.accept(Unknown Source) ~[?:1.8.0_181]
at java.util.Spliterators$ArraySpliterator.tryAdvance(Unknown Source) ~[?:1.8.0_181]
at java.util.stream.ReferencePipeline.forEachWithCancel(Unknown Source) ~[?:1.8.0_181]
at java.util.stream.AbstractPipeline.copyIntoWithCancel(Unknown Source) ~[?:1.8.0_181]
at java.util.stream.AbstractPipeline.copyInto(Unknown Source) ~[?:1.8.0_181]
at java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source) ~[?:1.8.0_181]
at java.util.stream.FindOps$FindOp.evaluateSequential(Unknown Source) ~[?:1.8.0_181]
at java.util.stream.AbstractPipeline.evaluate(Unknown Source) ~[?:1.8.0_181]
at java.util.stream.ReferencePipeline.findFirst(Unknown Source) ~[?:1.8.0_181]
at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:125) ~[selenium-remote-driver-3.14.0.jar:?]
at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:73) ~[selenium-remote-driver-3.14.0.jar:?]
at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:136) ~[selenium-remote-driver-3.14.0.jar:?]
at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:83) ~[selenium-remote-driver-3.14.0.jar:?]
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:548) ~[selenium-remote-driver-3.14.0.jar:?]
at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:212) ~[selenium-remote-driver-3.14.0.jar:?]
at org.openqa.selenium.remote.RemoteWebDriver.(RemoteWebDriver.java:130) ~[selenium-remote-driver-3.14.0.jar:?]
at org.openqa.selenium.firefox.FirefoxDriver.(FirefoxDriver.java:140) ~[selenium-firefox-driver-3.14.0.jar:?]
at com.googlecode.jmeter.plugins.webdriver.config.FirefoxDriverConfig.createBrowser(FirefoxDriverConfig.java:99) ~[jmeter-plugins-webdriver-3.3.jar:?]
at com.googlecode.jmeter.plugins.webdriver.config.FirefoxDriverConfig.createBrowser(FirefoxDriverConfig.java:22) ~[jmeter-plugins-webdriver-3.3.jar:?]
at com.googlecode.jmeter.plugins.webdriver.config.WebDriverConfig.getPreparedBrowser(WebDriverConfig.java:234) ~[jmeter-plugins-webdriver-3.3.jar:?]
at com.googlecode.jmeter.plugins.webdriver.config.WebDriverConfig.threadStarted(WebDriverConfig.java:221) ~[jmeter-plugins-webdriver-3.3.jar:?]
at org.apache.jmeter.threads.JMeterThread$ThreadListenerTraverser.addNode(JMeterThread.java:784) [ApacheJMeter_core.jar:5.4.1]
at org.apache.jorphan.collections.HashTree.traverseInto(HashTree.java:993) [jorphan.jar:5.4.1]
at org.apache.jorphan.collections.HashTree.traverse(HashTree.java:976) [jorphan.jar:5.4.1]
at org.apache.jmeter.threads.JMeterThread.threadStarted(JMeterThread.java:752) [ApacheJMeter_core.jar:5.4.1]
at org.apache.jmeter.threads.JMeterThread.initRun(JMeterThread.java:740) [ApacheJMeter_core.jar:5.4.1]
at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:252) [ApacheJMeter_core.jar:5.4.1]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_181]
Are you sure your system is capable of running 25 browsers? Looking at Firefox browser version 92 system requirements:
Recommended Hardware
Pentium 4 or newer processor that supports SSE2
512MB of RAM / 2GB of RAM for the 64-bit version
So do you have 51 GB of RAM an 26 CPU cores? It doesn't seem so as some of your browse instances don't respond to JSONWire protocol commands
Looking into WebDriver Sampler Introduction:
Note: It is NOT the intention of this project to replace the HTTP Samplers included in JMeter. Rather it is meant to compliment them by measuring the end user load time.
So you're supposed to be creating the main load using JMeter's HTTP Request samplers and if you want to additionally test the frontend - use 1 or 2 browser instances. There are several ways of converting Selenium scripts into JMeter test plans.

How can I solve a time out error in Jmeter

I am working with load testing in Jmeter and Blazemeter and I apply it in two different versions of the web application. One is the test version and the other is the production version. My script works fine in test version but not in the other one. Here I get some petitions that throw errors like this:
java.net.SocketException: Connection reset by peer: socket write error
at java.net.SocketOutputStream.socketWrite0(Native Method)
at java.net.SocketOutputStream.socketWrite(Unknown Source)
at java.net.SocketOutputStream.write(Unknown Source)
at sun.security.ssl.OutputRecord.writeBuffer(Unknown Source)
at sun.security.ssl.OutputRecord.write(Unknown Source)
at sun.security.ssl.SSLSocketImpl.writeRecordInternal(Unknown Source)
at sun.security.ssl.SSLSocketImpl.writeRecord(Unknown Source)
at sun.security.ssl.AppOutputStream.write(Unknown Source)
at org.apache.http.impl.io.SessionOutputBufferImpl.streamWrite(SessionOutputBufferImpl.java:124)
at org.apache.http.impl.io.SessionOutputBufferImpl.write(SessionOutputBufferImpl.java:160)
at org.apache.http.impl.io.ContentLengthOutputStream.write(ContentLengthOutputStream.java:113)
at org.apache.http.impl.io.ContentLengthOutputStream.write(ContentLengthOutputStream.java:120)
at org.apache.http.entity.StringEntity.writeTo(StringEntity.java:167)
at org.apache.http.impl.DefaultBHttpClientConnection.sendRequestEntity(DefaultBHttpClientConnection.java:156)
at org.apache.http.impl.conn.CPoolProxy.sendRequestEntity(CPoolProxy.java:152)
at org.apache.http.protocol.HttpRequestExecutor.doSendRequest(HttpRequestExecutor.java:238)
at org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl$5.doSendRequest(HTTPHC4Impl.java:392)
at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:123)
at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:272)
at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:185)
at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89)
at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110)
at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83)
at org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl.executeRequest(HTTPHC4Impl.java:843)
at org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl.sample(HTTPHC4Impl.java:574)
at org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy.sample(HTTPSamplerProxy.java:67)
at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1231)
at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1220)
at org.apache.jmeter.threads.JMeterThread.doSampling(JMeterThread.java:622)
at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:546)
at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:486)
at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:253)
at java.lang.Thread.run(Unknown Source)
I change the timeout values of the petition that throw that error but it does not work. It gives me this error:
java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(Unknown Source)
at java.net.SocketInputStream.read(Unknown Source)
at sun.security.ssl.InputRecord.readFully(Unknown Source)
at sun.security.ssl.InputRecord.read(Unknown Source)
at sun.security.ssl.SSLSocketImpl.readRecord(Unknown Source)
at sun.security.ssl.SSLSocketImpl.readDataRecord(Unknown Source)
at sun.security.ssl.AppInputStream.read(Unknown Source)
at org.apache.http.impl.io.SessionInputBufferImpl.streamRead(SessionInputBufferImpl.java:137)
at org.apache.http.impl.io.SessionInputBufferImpl.fillBuffer(SessionInputBufferImpl.java:153)
at org.apache.http.impl.io.SessionInputBufferImpl.readLine(SessionInputBufferImpl.java:280)
at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:138)
at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:56)
at org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:259)
at org.apache.http.impl.DefaultBHttpClientConnection.receiveResponseHeader(DefaultBHttpClientConnection.java:163)
at org.apache.http.impl.conn.CPoolProxy.receiveResponseHeader(CPoolProxy.java:157)
at org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:273)
at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:125)
at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:272)
at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:185)
at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89)
at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110)
at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83)
at org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl.executeRequest(HTTPHC4Impl.java:843)
at org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl.sample(HTTPHC4Impl.java:574)
at org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy.sample(HTTPSamplerProxy.java:67)
at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1231)
at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1220)
at org.apache.jmeter.threads.JMeterThread.doSampling(JMeterThread.java:622)
at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:546)
at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:486)
at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:253)
at java.lang.Thread.run(Unknown Source)
I am new to jmeter. I do not know how to solve this. Maybe it is not an error of my script. Still... do you have any suggestions?
Thanks
Most probably you're running into situation described in Connection Reset since JMeter 2.10 ? article from Apache JMeter Wiki
According to the article the reasons could be in:
Retry or stale check can hide issues on Server configuration:
Server failing to send the (optional) Keep-Alive header
Overwhelmed server refusing connection, retrying would increase load
So I would recommend
to check whether your production version is really sending Keep-Alive header in particular and compare the response headers from test and production environments in general:
to ensure that the application has enough headroom to operate in terms of CPU, RAM, Network sockets, etc., it can be done using i.e. JMeter PerfMon Plugin
If you're absolutely sure that your application behaviour is correct you can amend JMeter properties as it's described in the Wiki page to tolerate potentially incorrect system under test setup.
In user.properties file add the next lines:
httpclient4.retrycount=1
hc.parameters.file=hc.parameters
In hc.parameters file add the next lines:
http.connection.stalecheck$Boolean=true

JMeter - OutOfMemoryError when retrieving million records in JDBC request

When I'm trying to get above million records in JDBC request, I get an OutOfMemoryError:
ERROR o.a.j.JMeter: Uncaught exception:
java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOf(Unknown Source) ~[?:1.8.0_191]
at java.lang.AbstractStringBuilder.ensureCapacityInternal(Unknown Source) ~[?:1.8.0_191]
at java.lang.AbstractStringBuilder.append(Unknown Source) ~[?:1.8.0_191]
at java.lang.StringBuilder.append(Unknown Source) ~[?:1.8.0_191]
at java.lang.StringBuilder.append(Unknown Source) ~[?:1.8.0_191]
at org.apache.jmeter.protocol.jdbc.AbstractJDBCTestElement.getStringFromResultSet(AbstractJDBCTestElement.java:563) ~[ApacheJMeter_jdbc.jar:5.1.1 r1855137]
at org.apache.jmeter.protocol.jdbc.AbstractJDBCTestElement.execute(AbstractJDBCTestElement.java:175) ~[ApacheJMeter_jdbc.jar:5.1.1 r1855137]
at org.apache.jmeter.protocol.jdbc.sampler.JDBCSampler.sample(JDBCSampler.java:84) ~[ApacheJMeter_jdbc.jar:5.1.1 r1855137]
at org.apache.jmeter.threads.JMeterThread.doSampling(JMeterThread.java:622) ~[ApacheJMeter_core.jar:5.1.1 r1855137]
at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:546) ~[ApacheJMeter_core.jar:5.1.1 r1855137]
at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:486) ~[ApacheJMeter_core.jar:5.1.1 r1855137]
at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:253) ~[ApacheJMeter_core.jar:5.1.1 r1855137]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_191]
Is there such a limitation in JDBC? Is it JMeter bug which should stop execution with relevant error?
For example, for smaller records it returns
Response too large to be displayed. Size: 26848889 > Max: 10485760, Start of message:
Out of Memory is not a JMeter bug ... it means your JMeter process runs out of memory.
If using Windows, have a look at following section in your jmeter.bat
if not defined HEAP (
rem See the unix startup file for the rationale of the following parameters,
rem including some tuning recommendations
set HEAP=-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m
)
You might want to have a search around Stackoverflow as well for issues with JMeter heap space - an example:
JMeter OutOfMemoryError
Be aware that the "Results Tree View" is not designed to display millions of records but for script (aka test plan) development. I for my part would parameterize the number of records and use a small number for development and just use the larger numbers for actual testing (non-gui mode etc).
Open bin/jmeter.sh on linux or bin/jmeter.bat on windows, find this line and remove it from the comment line:
JVM_ARGS="-Xms512m -Xmx512m"
This variable is passed as arguments to jmeter at startup. Increase the default heapsize like this:
JVM_ARGS="-Xms1024m -Xmx1024m"
You could add more space if you needs more.

Websocket Sampler error - java.util.LinkedList$ListItr.checkForComodification(Unknown Source)

I am using Websocket Sampler plugin in JMeter but getting below error during test execution.
- Unexpected error: null
java.util.LinkedList$ListItr.checkForComodification(Unknown Source)
java.util.LinkedList$ListItr.next(Unknown Source)
JMeter.plugins.functional.samplers.websocket.ServiceSocket.getResponseMessage(ServiceSocket.java:149)
JMeter.plugins.functional.samplers.websocket.WebSocketSampler.sample(WebSocketSampler.java:159)
org.apache.jmeter.threads.JMeterThread.doSampling(JMeterThread.java:622)
org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:546)
org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:486)
org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:253)
java.lang.Thread.run(Unknown Source)
It’s a bug in this plugin.
Report it to maintainer or switch to alternative:
https://bitbucket.org/pjtr/jmeter-websocket-samplers/src

fire fox config for web sampler (jmeter) is not working

Please help. My web driver sampler for jmeter is not working. Im using firefox config.
2019-07-12 20:55:38,913 ERROR o.a.j.t.JMeterThread: Error calling threadStarted
java.lang.IllegalStateException: The path to the driver executable must be set by the webdriver.gecko.driver system property; for more information, see https://github.com/mozilla/geckodriver. The latest version can be downloaded from https://github.com/mozilla/geckodriver/releases
at com.google.common.base.Preconditions.checkState(Preconditions.java:843) ~[guava-28.0.jar:?]
at org.openqa.selenium.remote.service.DriverService.findExecutable(DriverService.java:125) ~[selenium-remote-driver-3.14.0.jar:?]
at org.openqa.selenium.firefox.GeckoDriverService.access$100(GeckoDriverService.java:43) ~[selenium-firefox-driver-3.14.0.jar:?]
at org.openqa.selenium.firefox.GeckoDriverService$Builder.findDefaultExecutable(GeckoDriverService.java:168) ~[selenium-firefox-driver-3.14.0.jar:?]
at org.openqa.selenium.remote.service.DriverService$Builder.build(DriverService.java:346) ~[selenium-remote-driver-3.14.0.jar:?]
at com.googlecode.jmeter.plugins.webdriver.config.FirefoxDriverConfig.createBrowser(FirefoxDriverConfig.java:99) ~[jmeter-plugins-webdriver-3.0.jar:?]
at com.googlecode.jmeter.plugins.webdriver.config.FirefoxDriverConfig.createBrowser(FirefoxDriverConfig.java:22) ~[jmeter-plugins-webdriver-3.0.jar:?]
at com.googlecode.jmeter.plugins.webdriver.config.WebDriverConfig.getPreparedBrowser(WebDriverConfig.java:233) ~[jmeter-plugins-webdriver-3.0.jar:?]
at com.googlecode.jmeter.plugins.webdriver.config.WebDriverConfig.threadStarted(WebDriverConfig.java:220) ~[jmeter-plugins-webdriver-3.0.jar:?]
at org.apache.jmeter.threads.JMeterThread$ThreadListenerTraverser.addNode(JMeterThread.java:762) [ApacheJMeter_core.jar:5.1.1 r1855137]
at org.apache.jorphan.collections.HashTree.traverseInto(HashTree.java:994) [jorphan.jar:5.1.1 r1855137]
at org.apache.jorphan.collections.HashTree.traverse(HashTree.java:977) [jorphan.jar:5.1.1 r1855137]
at org.apache.jmeter.threads.JMeterThread.threadStarted(JMeterThread.java:730) [ApacheJMeter_core.jar:5.1.1 r1855137]
at org.apache.jmeter.threads.JMeterThread.initRun(JMeterThread.java:718) [ApacheJMeter_core.jar:5.1.1 r1855137]
at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:249) [ApacheJMeter_core.jar:5.1.1 r1855137]
at java.lang.Thread.run(Thread.java:835) [?:?]
The path to the driver executable must be set by the webdriver.gecko.driver system property;
You need to:
Download geckodriver
Define webdriver.gecko.driver Java system property. In case of JMeter it can be done in 2 ways:
pass the location of the geckodriver binary via -D command-line argument:
jmeter -Dwebdriver.gecko.driver=/path/to/geckodriver.binary
or if you want to make the change permanent - add the next line to system.properties file (lives in "bin" folder of your JMeter installation)
webdriver.gecko.driver=/path/to/geckodriver.binary
JMeter restart will be required to pick the property up
References:
Overriding Properties Via The Command Line
Apache JMeter Properties Customization Guide

Resources