why do we need to run selenium standalone server for webdriverjs tests? - selenium

from selenium docs https://www.seleniumhq.org/docs/03_webdriver.jsp#webdriver-and-the-selenium-server we don't need to run selenium-server if we are using webdriver but almost all javascript automation frameworks need selenium-server to be started before running tests. why do we need to run selenium standalone server for webdriverjs tests ?

This is not true. Given your browser/ driver pair supports directConnect. It will run without the selenium server regardless of the language binding.
For instance, Here is the directConnect reference for protractor. https://github.com/angular/protractor/blob/master/docs/server-setup.md#connecting-directly-to-browser-drivers

Related

Does Behat started to use selenium webdriver?

I know , behat framework uses Selenium stand alone server to run the files which is not very effective. Has it been updated to use selenium webdriver ??...
"uses Selenium stand alone server to run the files which is not very effective. Has it been updated to use selenium webdriver"
Using the stand-alone server is irrelevant. The stand-alone server has both Selenium RC and Selenium WebDriver built in. It all depends on which classes you are extending from.
So to your question:
Has it been updated to use selenium webdriver?
Behat is just a DSL of sorts... If you are using Behat with Selenium, then it depends on what you are extending your classes from.
Behat itself has nothing to do with selenium.
Web automation is implemented in Mink, which is used with Behat via the MinkExtension.
All the drivers supported by Mink out of the box are listen in their docs:
GoutteDriver
BrowserKitDriver
Selenium2Driver
ZombieDriver
SahiDriver
SeleniumDriver
As you probably noticed there are two selenium drivers - SeleniumDriver supports the old SeleniumRC protocol - while Selenium2Driver supports the webdriver.

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.

Running a Selenium2 IDE test case on the command line

I need to use the Selenium IDE to create tests for projects we are working on, but to then take these tests and run them from the command line.
The situation is that we want our developers to be able to use the IDE to test websites using a central repository of test suites using the Selenium IDE. We also need the same tests (i.e. in the IDE HTML format) to be run by a CI server (Jenkins) on Sauce Labs.
I have found that the export from the IDE isn't great (test cases that worked on the IDE don't work from the command line). I also need to use WebDriver, e.g Selenium2.
This must be possible but I just cannot see how to do it.
Try out Selunit it combines Selenium tests in Selenese HTML format with Continuous Integration. Here is a tutorial how to execute Selenium tests directly from Selenium IDE in Hudson builds and to benefit from its reporting capabilities provided for JUnit, where Selunit transforms Selenium reports to.
Selenium provides a command-line test script runner, but it's well hidden. Check out the -htmlsuite option of selenium-server.jar.
In windows system you have to download selenium-server-standalone-2.32.0.jar and Browser(IE, chrome) driverserver after downlaod you have to open CMD and run command
java -jar selenium-server-standalone-2.0b3.jar -Dwebdriver.ie.driver=.\IEDriverServer32.exe

is Selenium Remote Webdriver Server similar to Hudson CI?

Right now I am using Hudson CI to launch browser in xvnc and run my tests through Webdriver (pre 2.0)
Should I use Selenium remote webdriver instead? is that more efficient than hudson ci?
I want to run my tests on Amazon....are there any selenium remote webdriver server or Selenium Grid plugin that can already integrate with Amazon? Should I pursue Grid or remotedriver server?
My ultimate goal is to be able to launch multiple tests parallel on Selenium on Amazon and be able to quickly scale up and down.
Right now I pay $100/month for server that has hudson CI on it....but I never end up using the whole capacity....
Grid or the Remote Server does not replace a CI tool like Hudson. They will not schedule jobs, parallelize your tests, report results (with history) or send email/IM notifications when builds fail.
So you would still have Hudson (or similar) for all those things, possibly using Grid or the Remote Server to decouple the machine(s) running the browser(s) from the one running the tests.
Selenium Grid will allow you launch multiple tests in parallel. And with the right configuration you can even run the tests of different browsers in parallel.
Selenium grid is still using selenium 1.x remote control drivers. So if you already have your tests written in webdriver code, then you might not be able to use it with current Selenium grid. There is a new version of selenium grid - Grid 2.0 that will be out soon. That will be support webdriver as well.