What is Selenium Remote Control (RC)?
Before we can find out what Selenium RC does, understanding what Selenium does is crucial. Selenium is an open-source and free automated testing suite. Selenium has become very popular when it comes to automated web-based testing. Not only does it support a lot of different browsers and platforms, but it also competes very well against the available commercial tools - the HP UFT (Unified Functional Testing) or HP QTP (Quick Test Professional)
A mass movement towards automated testing can be seen in the current industry trend. The repetitive manual testing scenarios have created the demand for bringing the practice of automating the manual scenarios.
What are the benefits of implementing automated tests?
Implementing automated testing has several benefits. They are mentioned below
The execution of repeated test cases is supported through the automation.
- It aids in the testing of a large test matrix.
- Parallel execution is enabled.
- Implementation encourages unattended execution of the testing pro
- The task improves accuracy and human-generated errors are reduced a lot
- Time and money can be saved in the process.
- The benefits do certainly result in a higher ROI and a faster GoTo market. Several automated testing benefits are understood and appreciated in the software testing industry.
When people start asking questions like "What is the best tool to automate the web-based tests?" or "Would it cost too much?" or "Would it be easy to adapt?", there can be a simple answer - Selenium. Selenium is preferred due to the following reasons:
- The platform is open source
- There is a large user base and the communities are very helpful
- Selenium supports multiple platforms and browsers.
- Active developments take place in the repositories.
- Multiple language implementations are supported.
[Also Read: Different Flavours Of Selenium]
Selenium is one of the most popular automated testing suites that can be found today. The tool is designed to encourage the automatic testing of the functions performed by web applications and a wide range of platforms and browsers. The acceptance has increased due to the open-source community that supports it.
Selenium RC is written in Java and allows the user to create test scripts for the web-based applications. The programming language can be anything that the user chooses. There were lots of disadvantages with Selenium IDE or Selenium core, which had been solved with the Selenium RC. There were loopholes and restrictions were imposed on the Selenium Core. That is why it was difficult for users to fully harvest the benefits of the tool. The testing process is a very cumbersome and tough task to achieve.
How does the Selenium RC work?
The working of the Selenium RC is based on its components. Each of the components has a role to play in running the test scripts.
What are the RC components?
The components of Selenium RC are responsible for the automation of the test scripts. They are:
- Selenium Server
- Client Libraries
The architecture of the Selenium RC is a client/server module. The clients and server communicate through appropriate internet protocols:
- The Selenium Server is responsible for launching and killing the browsers. It would interpret and run the Selenium commands that are sent from the test program. They act as the HTTP proxy, intercept and verify HTTP messages that are passed from the AUT to the browser.
- There are client libraries offering an interface between the Selenium server and each of the programming languages.
[For more information: How To Create Test Suites In Selenium]
Selenium commands in the test program are accessed through the simple HTTP requests of the Server. A programming language capable of sending HTTP requests can be used to automate the Selenium tests in the browsers.
The programming platform needed to run the commands from the designed program is offered by the client libraries. Another client library is supported for each of the supported languages. The Selenium client libraries would offer the application programming interface or API. This is a collection of functions that help to run the Selenium commands in the program. The programming function inside each interface supports each of the Selenium commands.
[Related Page: Blue Prism VS Selenium]
The APIs in the client libraries are responsible for passing the Selenese commands to a Selenium Server. The server then processes a specific function or conducts the tests with respect to the AUT or application under test. The APIs in the client libraries are also responsible for receiving the results and passing them to the program. The results can then be stored in a variable. The program might even report the incident as a failure or success. Corrective action can also take place if an undesired error had taken place.
The test program can be created by simply writing a program that runs some Selenese commands using the APIs in the client library. If there is a Selenium test script that has been developed in the IDE, the Selenium code can be generated as an alternative option. The IDE has the capability to translate the commands into the API function invocations of the client driver.
How to install Selenium?
Selenium doesn’t need to be installed. There is a collection of libraries that need to be downloaded depending on the language you want to use. When the language has been chosen, you would need to:
- Have Selenium RC Server installed on your system and
- Set up the programming project depending on the client driver specific to your language
[Also Read: Installation of Selenium IDE]
How to install the Selenium Server?
- The Selenium server is a single Java jar file and it doesn’t need to be installed.
- This .zip file needs to be downloaded on your pc.
Subscribe to our youtube channel to get new updates..!
Now, it has to be extracted in the required directory.
That’s what is needed to be done to install the selenium server.
How to run the Selenium Server?
The server needs to be started before starting the tests. The user needs to move to the folder where the Selenium RCs are located and command needs to be run.
java -jar selenium-server-standalone-.jar
The process can be shortened by the creation of a shall executable or batch file(.sh in Linux or .bat on Windows) that contains the above command. A shortcut needs to be made to this executable file on the desktop. Double-clicking on the icon starts the server. However, Java would need to be installed on the system if you want to run the server, while the PATH variable needs to be correctly configured. You can see if the proper installation of Java has been done by using the following command.
A java version, if returned, you can use Selenium RC, considering the version is 1.5 or maybe later.
How to use the Java Client Driver?
If you want to work with Selenium using Java, its client driver needs to be installed first. The steps explaining the usage of Java Client Driver are as follows.
- You need to start by downloading the required Java driver zip files.
- Then you would need to extract the selenium-java.jar file.
- You should then open the java IDE like IntelliJ, Eclipse or Netbeans.
- You can create any java project after this.
- The selenium-java-.jar files need to be added to the project.
- The selenium-java-.jar file needs to be added to the project classpath.
- You should run the Selenium server through the console.
- The test can be executed through the command prompt or the Java IDE.
How to use the Python Driver?
You would need to have the Python Driver on the system before you can use Selenium. The steps explaining the usage of Python Driver are as follows.
- Selenium needs to installed via PIP and the downloads can be found here.
- The Selenium test can be written in Python code or a script can be exported from the IDE to python files.
- The Selenium server can be run through the console.
- A test can be executed from the console or the Python IDE.
How can you use the .NET client driver?
- Using .NET with Selenium would be a little different in terms of the installation procedure. This is how you can proceed.
- From the SeleniumHQ, you would need to download the Selenium RC.
- The next step involves the extraction of the folder much like the other languages.
- After this, NUnit needs to be downloaded and installed. NUnit can be used as a test engine. Otherwise, just a main() function can be used to run the tests.
- You would need to open the .NET IDE like SharpDevelop or Visual Studio.
- You can now create a .dll class library.
- References need to be added to the required DLLs
- The Selenium test must be written in some .NET language like VB.NET, C#. Then you need to export the script to C# file from the Selenium IDE and the code can be put into a class file.
- If you had included NUnit in the project, it can be used. Otherwise, the test can be run using the main() program.
- The Selenium server has to be run from the console.
- You can run the test from the desired IDE, the command prompt or even your NUnit GUI.
[Click to know Selenium Commands: Selenium Commands]
How to use the Ruby Client Driver?
The Ruby Client Driver is pretty easy to install. You should have it before you can work with the language.
- You should first install the RubyForge if RubyGems is not already present.
- Then you should run the command:
- gem install selenium-client
- You would need to add require "selenium/client" at the beginning of the test script.
- You can write the test script with help of any Ruby harness, like Mini:: Test, Test:: Unit or RSpec.
- You can run the Selenium server through the console.
- The test can be executed in a similar way as the other Ruby scripts.
[Also Read: How to use WebDriver Backed Selenium]
What should you know about the Selenium API?
The Selenium API (Application Programming Interface) offers a platform that can be easily understood and explored. The APIs help to make the tests easier to read, code, and maintain. There is no tying to any particular test framework and can be used equally well with the old method.
The Selenium API utilizes naming conventions which can be understood if someone knows Selenese and much of this interface needs to be understood on your own. However, there are a few aspects that are a little less obvious and are yet very crucial. The browser can be represented by allocating a 'browser interface' to the program variable. The program variable calls function through the browser, which executes the Selenese commands. Some of the commands that can be used include type or open and verify.
A few parameters are required when the browser instances are being created. They are mentioned below.
- host - This parameter is used to mention the IP address of the server. Generally, it would be the exact machine as the client. localhost would be passed in such a case. The host parameter could be optional in some of the clients.
- port - This parameter mentions the TCP/IP port where information is offered from the client to the server for the establishment of a connection. Even this parameter would be optional in a few of the client drivers.
- browser - The next parameter would be that of the browser. This one, however, is a necessary parameter.
- URL - This would be the URL for the application that is being tested. All client libraries would require this information. This parameter is integral information that would be required to start AUT-proxy-browser communication.
A few client libraries would need that the browser is started forcefully through the start() method.
[Related Page: Introduction to Selenium 2.0 Webdriver]
How would you run the Selenese test commands?
Once the browser has been initialized and its reference has been assigned in a variable, the Selenese commands can be run by invoking the required methods referring that browser variable. The type function can be called in the manner:
selenium.type("field-id", "string to type")
The browser would perform the type of operation in the background. This would be identical to the user typing the input to a browser. The locator along with the string mentioned during the function invocation would be used.
[Creating Selenium test suites: How to Create test suites in Selenium]
How are the results to be reported using Selenium RC?
There is no mechanism that Selenium RC has for reporting the results. The users are allowed to build the customizing according to their needs and the features of the selected programming language can be used. This idea works quite well, but what would the users do if they need something quick that has been already prepared for them. The existing test framework or library would meet the needs quicker than the reporting code developed by you.
Reporting tools of the test framework
The test frameworks can be availed for most of the programming languages. They offer a test engine that is flexible enough to execute the tests. There is a library code that helps to report the results as well. There are two very common test frameworks in Java - TestNG and JUnit. NUnit is used for .NET platforms.
Testing Report Libraries
Third-party libraries specially designed for reporting the test outcomes in the desired programming language are also available. A lot of formats like PDF or HTML are also supported.
What is the most elegant approach to using Selenium RC?
Most people who are starting with testing frameworks would like to commence with the available reporting features of the frameworks. Then people start exploring those libraries which would be less bothering than developing something on your own. But as people start to operate Selenium, they start introducing their own signature print statements in order to report the progress. This often results in the users developing their own reporting and using it along with the library or the test framework.
What are the different server options?
Command-line options can be used to change the default server behavior when the server is launched. The server is started by running the following command:
java -jar selenium-server-standalone-.jar
$ java -jar selenium-server-standalone-.jar -h
[For More Information click: How to work on pages with AJAX in selenium?]
If the AUT is behind an HTTP proxy and requires authentication, you would need to configure http.proxyUser, http.proxyPassword, http.proxyPort and http.proxyHost. The following command does the job:
$ java -jar selenium-server-standalone-.jar -Dhttp.proxyHost=proxy.com -Dhttp.proxyPort=8080 -Dhttp.proxyUser=username -Dhttp.proxyPassword=password
Multi-Window mode is the default behavior since Selenium 1.0. The multi-window mode allows the AUT to run in a separate window and not in the default frame. The multi-window mode can be specified using the command:
[Related Page: Top 10 Reasons Why You Should Learn Selenium]
Pros of Selenium RC
Selenium RC is one of the most common automated testing tools today. The advantages of Selenium RC are listed below.
- It supports a wide range of platforms and browsers
- It supports lots of programming languages and constructs
- Creation of user-defined utilities like exceptions or generics is also supported to customize the framework
- Supports error handling and database testing
- It supports data-driven testing
- Logging and capturing screenshots are supported
- Testing frameworks like NUnit, JUnit and TestNG are supported.
Cons of Selenium RC
Though Selenium RC is very popular today, it has a few drawbacks. Let’s have a look at them.
- The test scripts do not communicate with the browser and you would need to keep the selenium RC server running so that communication can be enabled
- Prior programming knowledge is something that the user is bound to have
- Testing of WAP-based applications is not supported
- Alerts and navigations cannot be effectively handled
- Though it is faster than Selenium IDE, it is slower than WebDriver.
- Ajax calls cannot be handled efficiently.
- The implementation of supporters is not supported.
Selenium RC vs WebDriver
The Selenium Remote Control and WebDriver allow the testers to use their programming language of choice for the test scripts. The tests can be run in different browsers, but they do differ in certain scenarios. Let’s differentiate between Selenium RC and WebDriver in a tabular form.
|Selenium RC has a much-complicated architecture. An application named Selenium Remote Control needs to be run before the tests can be started.||WebDriver has a simple architecture - the browser is controlled from the OS level and you just need the language IDE.|
|3.||Selenium Core can access disabled elements.||WebDriver interacts with the pages more realistically.|
|4.||Selenium RC has a much more mature API but there are redundancies and confusing commands.||WebDriver has a simpler API, without redundancies and confusing commands.|
|5.||The headless htmlUnit browsers are not supported on Selenium RC. A real and visible browser is needed by Selenium RC.||WebDriver can support the headless htmlUnit browser.|
Selenium offers a portable framework to automate web-based testing. It offers playback for the functional tests where there would be no need to learn the scripting language. These tests would have the capability to run on most of the modern browsers. Being open-source, the developers are allowed to download it for free and use it without being charged.