There are two way things we can use Selenium Gird for.
so let's see how to use selenium grid for browser compatibility testing.
There are two way we can make this happen
Using different browsers on same machine.
In this example we will use SeleniumGridDemo.java file, It has two methods test_first() and test_second() which we will execute on Safari and Internet Explorer in parallel.
SeleniumGridDemo.java
Now you can run this using eclipse IDE or you can write down the ANT build file as follows.
build.xml
Now in order to run testcases in parallel we need to start grid hub and selenium remote controls. As we have specified two threads in testng.xml we will start two remote controls.
To start grid hub and remote control, Open command prompt, go to selenium grid directory and give following commands.
to stat the grid hub
After this open http://localhost:4444/console. In this you should be able to see both the remote controls under Available Remote Controls section as appears in below image.- To Run our testecases in parallel to save the execution time, as I described in my previous post.http://qtp-help.blogspot.com/2011/08/selenium-grid.html
- To test the browser compatibility by running all the testcase in parallel on different browsers.
so let's see how to use selenium grid for browser compatibility testing.
There are two way we can make this happen
Using different browsers on same machine.
In this example we will use SeleniumGridDemo.java file, It has two methods test_first() and test_second() which we will execute on Safari and Internet Explorer in parallel.
SeleniumGridDemo.java
/** * @author Gaurang Shah * To demonstrate the Selenium Grid */ import org.testng.annotations.*; import com.thoughtworks.selenium.DefaultSelenium; import com.thoughtworks.selenium.Selenium; public class SeleniumGridDemo { public Selenium selenium; @Parameters( { "browser" }) @BeforeClass public void setup(String browser) { selenium = new DefaultSelenium("localhost", 4444, browser,"http://google.com"); selenium.start(); } @AfterClass public void tearDown() { selenium.stop(); } @Test public void test_first() { selenium.open("/"); selenium.type("q", "First"); selenium.click("btnG"); } @Test public void test_second() { selenium.open("/"); selenium.type("q", "second"); selenium.click("btnG"); } }testng.xml
<suite name="Same TestCases on on same machine on different Browser" verbose="3" parallel="tests" thread-count="2"> <test name="Run on Firefox"> <parameter name="browser" value="*safari"/> <classes> <class name="SeleniumGridDemo1"/> </classes> </test> <test name="Run on IE"> <parameter name="browser" value="*iexplore"/> <classes> <class name="SeleniumGridDemo1"/> </classes> </test> </suite>
Now you can run this using eclipse IDE or you can write down the ANT build file as follows.
build.xml
<project name="demo" default="run" basedir="."> <property name="classes.dir" value="bin" /> <property name="src.dir" value="src" /> <property name="report.dir" value="reports" /> <path id="libs"> <fileset dir="src\Libs\"> <include name="*.jar"/> </fileset> <pathelement path="${basedir}\${classes.dir}"/> </path> <target name="run"> <antcall target="init"/> <antcall target="compile"/> <antcall target="runTestNG"/> </target> <!-- Delete old data and create new directories --> <target name="init" > <echo>Initlizing...</echo> <delete dir="${classes.dir}" /> <mkdir dir="${classes.dir}"/> <delete dir="${report.dir}" /> <mkdir dir="${report.dir}"/> <mkdir dir="${logs.dir}"/> </target> <!-- Complies the java files --> <target name="compile"> <echo>Compiling...</echo> <javac debug="true" srcdir="${src.dir}" destdir="${classes.dir}" classpathref="libs" /> </target> <target name="runTestNG"> <taskdef resource="testngtasks" classpathref="libs"/> <testng outputDir="${report.dir}" haltonfailure="false" useDefaultListeners="true" classpathref="libs"> <xmlfileset dir="${basedir}" includes="testng.xml"/> </testng> </target> </project>
Now in order to run testcases in parallel we need to start grid hub and selenium remote controls. As we have specified two threads in testng.xml we will start two remote controls.
To start grid hub and remote control, Open command prompt, go to selenium grid directory and give following commands.
to stat the grid hub
ant launch-hubTo Start the selenium remote control for Internet explorer
ant launch-remote-control -Denvironment=*safariTo Start the selenium remote control for Internet explorer on different port
ant launch-remote-control -Denvironment=*iexplore -Dport=5556
Using different browsers on different machines
To run the testcases on different machine we don't require to change in testng.xml or java file we just need to start two remote control on two different machines.
We will start Remote control for safari browser on local machine and for IE browser on remote machine.
To start grid hub and remote control, Open command prompt, go to selenium grid directory and give following commands.
to stat the grid hub
ant launch-hubTo Start the selenium remote control for Internet explorer
ant launch-remote-control -Denvironment="*safari"
Now Login into another machine and from command prompt navigate to selenium grid directory and fire following command
ant launch-remote-control -DhubURL=http://172.29.72.185:4444/ -Denvironment=*iexploreIn above command 172.29.72.185 is the IP address where my Selenium grid Hub is running.
After this open http://localhost:4444/console. In this you should be able to see both the remote controls under Available Remote Controls section as appears in below image.