What is difference between selenium-server-standalone and selenium-server. - selenium

I can see two repository in Maven Central repo. Please clarify what is difference between both jars

This is explained in the Selenium documentation:
You may, or may not, need the Selenium Server, depending on how you
intend to use Selenium-WebDriver. If your browser and tests will all
run on the same machine, and your tests only use the WebDriver API,
then you do not need to run the Selenium-Server; WebDriver will run
the browser directly.
There are some reasons though to use the Selenium-Server with
Selenium-WebDriver.
You are using Selenium-Grid to distribute your tests over multiple
machines or virtual machines (VMs).
You want to connect to a remote
machine that has a particular browser version that is not on your
current machine.
You are not using the Java bindings (i.e. Python, C#,
or Ruby) and would like to use HtmlUnit Driver
The selenium-server-standalone.jar was used in older Selenium versions (with Selenium Server).
Newer versions of Selenium (WebDriver API) uses selenium-java.jar.

As per the Selenium Server jar releases, selenium-server-standalone jars are no more pushed to the Maven Artifact.
Till Selenium Release v2.53.0, selenium-server-standalone jars were pushed to the Maven Artifact separately as Jenkins Releases. But starting Selenium Release v3.x only the selenium-server jars and the selenium-java client jars are pushed to the Maven Artifact
Solution
If you running everything on the same machine, then using the selenium-java client maven dependency should be just fine.
If you running something on a machine that's not your desktop, then using the selenium-server maven dependency must be used. In this case you can also embed the Selenium server into your own project by adding the selenium-server dependency to your pom.xml.
If you intent to use the RemoteWebDriver implementation, then you need to download the selenium-server-standalone.jar from the Selenium Downloads page

Related

When replacing selenium jars with latest version under JMeter lib folder 'ConversionException' is thrown

I am working with JMeter and Selenium. Installed the plugins manager and via that, installed web-driver sampler. When I look into lib folder, I found the selenium jars version are 2.52.0 which is much older. I can able to work with that without any issues. But the real problem is:
Using Maven, I updated all the selenium jars to 3.9.1 version and its dependant jars like guava, gson, commons, etc.
Now, when I open the jmx files with WebDriver sampler and driver configs, I receive below error.
Using maven, I mean, I downloaded all the jars from maven repo manually and pasted into JMeter lib folder.
Please help me to work with latest Selenium drivers in JMeter.
You won't be able to use WebDriver Sampler plugin with Selenium 3.9.1 as it explicitly relies on SessionNotFoundException class which has been removed in the latest Selenium libraries.
So the options are in:
Use WebDriver Sampler with browser version(s) supported by Selenium 2.52.0
Reach out to WebDriver Sampler plugin developers and/or maintainers at jmeter-plugins forum to check whether it is planned to update Selenium libraries and if yes - when. You can also update WebDriver Sampler source code by yourself and send pull request to the plugin maintainer.
Switch to JSR223 Sampler and Groovy language instead. Apart from being able to use latest libraries you will have full control of the WebDriver instance using DesiredCapabilities at full instead of limited subset exposed via *Driver Config elements.

Version compatibility between selenium-server-standalone.jar and chromedriver?

What is the version compatibility between chromedriver and selenium-server-standalone.jar?
In other words, does latest version of chromedriver work with latest version of selenium-server-standalone.jar?
The Chrome Driver itself is tied more to the version of Chrome available on the execution Node (where the browser is actually spawned and a test is ran).
If you refer to the release notes, you'll see how the driver versions map to the various releases of Chrome itself.
The practice I have in place is as follows:
I match my Selenium dependency (C#/Java language bindings) to the version of the selenium-server I run either locally or on my Grid.
When I deploy a version of my test project that upgrades the Selenium dependency, I simply upgrade all my Grid VM's to the matching version (using JSON Node config really helps here, since all I have to do is stop the service, swap the jar, and relaunch with my JSON configs).
Firefox Driver is built into Selenium, so no upgrade management there. IE Driver has (at least historically) matched the minor version number of Selenium (for example, current IE Driver is 2.48.0 while Selenium is at 2.48.2), so I typically upgrade my IE driver whenever I upgrade my Selenium version. The version of Chrome Driver I employ on any given Node will then correspond to whatever version of Chrome that particular Node has installed, though in my own case, this is typically the most recent version.
In short, it's more important to match the version of Chrome Driver to the version of Chrome under which you are testing.
To add my 2 cents, chromedriver acts as the "bridge" between Chrome and the Selenium jar, so on one side you have the protocol and interface (WebDriver) that is backward compatible and on the other you have dependency on browser's releases which isn't. So compatibility wise #tim-slifer's answer is sufficient (except that now Firefox also has a driver).
However, when consuming the selenium-server-standalone.jar, you consume a binary. So versioning wise, keeping up to date with the Selenium releases is simply to have fixes to new issues that rise with time - some of which related to the compatibility between chromedriver and Chrome.
So yes and no, there is some compatibility between the 2, although an old jar and bindings can work just fine with new browsers.

Difference between "selenium server" and "selenium server standalone" jars

Can anyone please explain the difference between "selenium server" and "selenium server standalone" jars and use of both.
Which one to prefer?
When to use which one?
As per Selenium Documents,
You may, or may not, need the Selenium Server, depending on how you intend to use Selenium-WebDriver. If you will be only using the WebDriver API you do not need the Selenium-Server. If your browser and tests will all run on the same machine, and your tests only use the WebDriver API, then you do not need to run the Selenium-Server; WebDriver will run the browser directly.
There are some reasons though to use the Selenium-Server with Selenium-WebDriver.
You are using Selenium-Grid to distribute your tests over multiple machines or virtual machines (VMs).
You want to connect to a remote machine that has a particular browser version that is not on your current machine.
You are not using the Java bindings (i.e. Python, C#, or Ruby) and would like to use HtmlUnit Driver.
Here is a photo from the old version of selenium website:
Selenium Server is formerly known as selenium RC server.
I can not say exact selenium server standalone definition, but i can say based on the version
In the selenium server standalone server is different
I believe that "selenium server" jar IS "selenium server standalone" jar. If you look at http://www.seleniumhq.org/download/ - there is not such thing as "selenium server".
Grid and RC servers are in the same jar file. RC ("Remote Control") is deprecated in Selenium 2 and emulated in Selenium 3.
Lazily, "selenium server standalone" can be called just "selenium server", because that's what it is: proxy to selenium grid or whatever remote browsers you want to automate. "standalone" is HTTP server.
http://www.protractortest.org/#/infrastructure hints at difference in terminology: it is "standalone" when running locally, and "server" when running (standalone jar) on remote grid (which is a http server assigning jobs to multiple selenium servers, each running "standalone" jars).
If one enters via the Getting Started page at the Selenium Wiki, there is a download link to selenium-release.storage.googleapis.com. E.g. the 3.8 release directory features:
[DIR] selenium-server-3.8.1.zip 2017-12-01 19:21:38 20.58MB
[DIR] selenium-server-standalone-3.8.1.jar 2017-12-01 19:17:06 21.79MB
So there are indeed two versions. It seems a matter of packaging:
The selenium-server-3.8.1.zip contains a file selenium-3.8.1-nodeps.jar and the dependent classes as .jar files ("jars in zip"):
..
---x------ 63504 1-Feb-1985 00:00:00 libs/jcommander-1.48.jar
..
---x------ 857721 1-Feb-1985 00:00:00 selenium-3.8.1-nodeps-sources.jar
---x------ 2137810 1-Feb-1985 00:00:00 selenium-3.8.1-nodeps.jar
while the selenium-server-standalone-3.8.1.jar contains the dependent classes and its own classes as direct entries ("class files in jar"):
..
-rw-rw-rw- 1014 10-Apr-2015 19:45:56 com/beust/jcommander/DynamicParameter.class
-rw-rw-rw- 237 10-Apr-2015 19:45:56 com/beust/jcommanderFuzzyMap$IKey.class
-rw-rw-rw- 2910 10-Apr-2015 19:45:56 com/beust/jcommander/FuzzyMap.class
..
Selenium is an opensource, web application automation testing tool suite which provides cross platform and cross browser automation facility.
Selenium is composed of multiple software tools that includes:-
(1). Selenium IDE, (2). Selenium RC, (3). Selenium WebDriver, (4). Selenium Grid
Coming to the Selenium Server,
The Selenium Server is a Selenium RC(Remote Control) component that which launches and kills browsers, interprets and runs the Selenese commands passed from the test program, and acts as an HTTP proxy, intercepting and verifying HTTP messages passed between the browser and the AUT(Application Under Test).
So, Selenium Server is needed to run Selenium RC and Selenium WebDriver tests remotely over multiple machines or VMs using Selenium Grid.
And the Selenium Server Standalone is a bundled jar that contains WebDriver API, Selenium Server and the Selenium Grid for running the tests locally and remotely across many platforms and browsers.
The Selenium Server is needed in order to run Remote Selenium
WebDriver. Selenium 3.X is no longer capable of running Selenium RC
directly, rather it does it through emulation and the
WebDriverBackedSelenium interface.
see https://docs.seleniumhq.org/download/
So,if you use Selenium RC,the Seleniium Server is what you need.if you use Selenium 3.X and update,selenium-server-standalone is what you need.I have the same question and i find the answer.

Moving from Selenium IDE to what?

I have been given the following job from my boss:
three years ago a former employee created selenium tests for our project and committed them via eclipse
now I have to update the tests due to the fact that the software has changed through time.
I created new IDE tests, instead of editing the old ones.
I have committed them through CVS in the project folder and I access them via a browser (selenium has some folder in the project)
when I run these tests via IDE, they run fine, but when I run them via the TEstRUnner that is in the old selenium installation, there are a lot of errors.
Should I install new version of Selenium in the project folder and what should it be?
Or should I just run the tests from IDE instead? (I read somewhere that TestRunner will be deprecated)
How are tests made in IDE run through Web Driver?
Have you looked at Selenium Builder? It supports migrating existing scripts, works well with Sauce Labs and there is also a Jenkins plugin](https://wiki.jenkins-ci.org/display/JENKINS/Selenium+Builder+Plugin) available.
Tests built using Selenium IDE are built using Selenium RC (1.0), and selenium WebDriver is the foundation of Selenium 2.0. Selenium has a migration document for this transition. In moving to Web Driver, you might be required to code the tests yourself, rather than using the point and click Selenium IDE.
Additionally, there is a hybrid approach for using Selenium RC code on Selenium Web Driver: http://docs.seleniumhq.org/docs/03_webdriver.jsp#alternative-back-ends-mixing-webdriver-and-rc-technologies
In order to run the Web Driver tests, you will need to have a selenium server or local browser to execute these tests. Some examples are SauceLabs, Selenium Grid, a standalone Selenium Server, or I believe you allow Web Driver to directly control the browser on the computer executing the code.

re-development of Chrome webdriver

I hear that webdriver for Chrome is being re-developed as part of the Chromium project (since the original Chrome webdriver of the selenium project is unusable). Does anyone know if development is complete? If so, where can I find the jars? Has it been pushed to maven central yet?
The new Chrome driver has been checked into the Chromium project tree, and the binaries made available on the Selenium project site. The individual language bindings for the Chrome driver will still be included in the Selenium downloads. Information about what is required to run the new Chrome driver can be found in the project wiki. Note that Chrome 12.0.712.0 or higher is required to work with the new Chrome driver.
The .jars, as of this writing, are not available yet in any Maven repository. You can expect that to change when the next public release of the compiled sources is available. In the interim, you can build from the latest sources yourself.