[Lab 6] Selenium Grid Understanding and Configuring


Selenium Greed allows you run your tests on different machines against different browsers in parallel. That is, running multiple tests at the same time against different machines running different browsers and operating system. Essentially, Selenium Grid support distributed test execution.


Selenium installation:
http://javadev.org/development-tools/testing/selenium/installation/centos/7/


My Eclipse Sources:
https://github.com/javalabs-org/lab-06-selenium-grid/


Selenium versions: http://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-firefox-driver



Start as Server (Hub) (192.168.1.11):

$ java -jar /opt/selenium/selenium -role hub

Nodes should register to http://192.168.1.11:4444/grid/register/

We can connect to hub by browsers:
http://192.168.1.11:4444/grid/console/


Start as Node (192.168.1.6):

$ java -jar /opt/selenium/selenium -role webdriver -hub http://192.168.1.11:4444/grid/register/ -port 5557

We can connect to hub by browsers:
http://192.168.1.6:5557/wd/hub/


Works well, when I’m work with remote Windows 7, but when I’m work with ubuntu 14.04, I’m receiving next exception (And i do not know how to fix it):


Build info: version: '2.53.0', revision: '35ae25b1534ae328c771e0856c93e187490ca824', time: '2016-03-15 10:43:46'
System info: host: 'workstation', ip: '127.0.1.1', os.name: 'Linux', os.arch: 'amd64', os.version: '4.2.0-27-generic', java.version: '1.8.0_91'
Driver info: org.openqa.selenium.remote.RemoteWebDriver
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:206)
    at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:158)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:678)
    at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:249)
    at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:131)
    at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:158)
    at org.javadev.selenium.grid.StarterOfGrid.main(StarterOfGrid.java:20)
Caused by: org.openqa.selenium.remote.ErrorHandler$UnknownServerException: Unable to connect to host 127.0.0.1 on port 7055 after 45000 ms. Firefox console output:
u-paket för Firefox.","creator":"Canonical Ltd.","homepageURL":null},{"locales":["uk"],"name":"Ubuntu Modifications","description":"Убунтівські доповнення до Firefox.","creator":"Canonical Ltd.","homepageURL":null},{"locales":["zh-CN"],"name":"Ubuntu Modifications","description":"Ubuntu 火狐扩展包.","creator":"Canonical Ltd.","homepageURL":null},{"locales":["zh-TW"],"name":"Ubuntu Modifications","description":"Ubuntu Firefox 擴充包。","creator":"Canonical Ltd.","homepageURL":null}],"targetApplications":[{"id":"{ec8030f7-c20a-464f-9b0e-13a3a9e97384}","minVersion":"9.0","maxVersion":"37.0a1"}],"targetPlatforms":[],"multiprocessCompatible":false,"signedState":2,"seen":true}
1465735249209	DeferredSave.extensions.json	DEBUG	Save changes


Parallel Execution (I don’t test this)

Install TestNG pluggin for Eclipse:

help –> Install New Software

Add:

http://beust.com/eclipse

Run ParallelTests.java

Console Output:

[TestNG] Running:
  /tmp/testng-eclipse-235466463/testng-customsuite.xml


$ cat /tmp/testng-eclipse-235466463/testng-customsuite.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Default suite">
  <test verbose="2" name="Default test">
    <classes>
      <class name="org.javadev.selenium.grid.ParallelTests"/>
    </classes>
  </test> <!-- Default test -->
</suite> <!-- Default suite -->


This file has been upated and moved to resource folder.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Default suite" thread-count="4" parallels="tests">

  <test verbose="2" name="Win10">
    <parameters>
         <parameter name="platform" value="WIN8_1" />
         <parameter name="browserName" value="chrome" />
         <parameter name="remoteurl" value="http://192.168.1.6:5557/wd/hub" />
    </parameters>
    <classes>
      <class name="org.javadev.selenium.grid.ParallelTests">
        <methods>
            <include name="googleSearch" />
            <include name="clickExecuteAutomation" />
        </methods>
      </class>
    </classes>
  </test>

  <test verbose="2" name="Win8_1">
    <parameters>
         <parameter name="platform" value="WIN8_1" />
         <parameter name="browserName" value="firefox" />
         <parameter name="remoteurl" value="http://192.168.1.7:5557/wd/hub" />
    </parameters>
    <classes>
      <class name="org.javadev.selenium.grid.ParallelTests"/>
    </classes>
  </test>
</suite>


Before run, need to add to Path chrome driver for selenium.