I am running selenium(2.53) and firefox 40 for my project.
I am running the testng suite programmatically using thread pool
executors. I also wanted to use WebDriverBackedSelenium to use old
selenium functions.
//Below is the execution code.
List<Class> listenerClasses = new ArrayList<Class>();
AdminCourseDashboardSuite");
XmlTest test = new XmlTest(suite);
test.setName("AdminCourseDashboardTest");
XmlClass clss1 = new XmlClass(AdminCourseDashboard.class.getName());
clss1.setName("AdminCourseDashboardClass");
classeslist.add(clss1);
test.setXmlClasses(classeslist);
testlist.add(test);
suite.setTests(testlist);
suiteslist.add(suite);
tng.setXmlSuites(suiteslist);
tng.run();
}
public static void main(String args[]) throws InterruptedException{
/* Paramater
* 1st Parameter - Test Class Name
* 2nd Parameter - ThreadPool Size
* 3rd Parameter - SuiteName
* 4th Parameter - Time to Run
* */
// String ClassName = args[0];
String Threadpoolsize = args[0];
String SuiteName = args[1];
String TimeToRun = args[2];
System.out.println(Threadpoolsize+" "+SuiteName+" "+TimeToRun+" ");
ScheduledExecutorService scheduledThreadPool = Executors.newScheduledThreadPool(Integer.parseInt(Threadpoolsize));
long startTime = System.currentTimeMillis();
long TimeDuration1 = Integer.parseInt(TimeToRun)*60*1000;
//new AdminCourseDashboardExecutor().run();
for(int i=0; i<10; i++) {
Thread.sleep(20000);
scheduledThreadPool.scheduleAtFixedRate(new AdminCourseDashboardExecutor(),5, 120, TimeUnit.SECONDS);
}
scheduledThreadPool.awaitTermination((startTime+TimeDuration1)-System.currentTimeMillis(), TimeUnit.MILLISECONDS);
scheduledThreadPool.shutdown();
}
//This is actual selenium code getting called.
public RemoteWebDriver browser;
//public FirefoxDriver browser;
public WebDriverWait wait;
public WebDriverBackedSelenium selenium;
public BrowserMobProxyServer proxybm;
public PerformanceTiming timings;
public Har pages;
public String baseURL= "
https://ras.sabacloud.com/";
public readCSVFile csv = null;
public Map<String,String>Configdata=null;
public String URL;
public void onFinish(ISuite arg0) {
System.out.println("ISuite Data: Before Start"+arg0);
}
public void onStart(ISuite arg0) {
System.out.println("ISuite Data: After Start"+arg0);
}
@BeforeSuite
public void beforestart() throws IOException{
Map<String,String> data = new HashMap<String,String>();
Configdata = ConfigurationData.getInstance().getconfigData();
int portnumber = findFreePort();
try{
Configdata.put("portnumber",String.valueOf(portnumber));
proxybm = BrowserMobProxyFactory.createInstance(Configdata);
BrowserMobProxyManager.setBrowserMobProxyServer(proxybm);
Proxy seleniumProxy = ClientUtil.createSeleniumProxy(proxybm);
DesiredCapabilities capabilities = DesiredCapabilities.firefox();
capabilities.setCapability(CapabilityType.PROXY, seleniumProxy);
if(Configdata.containsKey("browser")){
browser = SabaWebDriverFactory.createWebDiverInstance(Configdata, capabilities);
SabaWebDriverManager.setSabaWebDriverManager(browser);
}
/* if(Configdata.containsKey("filename")){
String path = Configdata.get("path");
String filename = Configdata.get("filename");
File csvfile = new File(path+"\\"+filename);
System.out.println(csvfile.toString());
FileReader reader = new FileReader(csvfile);
csv = new readCSVFile(reader);
}*/
System.out.println("Creating Firefox Driver");
URL = (String)Configdata.get("AppURL");
timings = new PerformanceTiming();
pages = new Har();
System.out.println(URL);
selenium = new WebDriverBackedSelenium(browser,URL);
//selenium = new WebDriverBackedSelenium
wait = new WebDriverWait(browser,120);
}catch(Exception e){
e.printStackTrace();
}
}
@AfterSuite
public void afterend(){
System.out.println(pages.toString());
try {
pages.writeTo(new File("D:\\logs\\"+Thread.currentThread().getName()+".har"));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
proxybm.stop();
browser.close();
}
/* @DataProvider(name="dataset")
public Object[][] browserConfig(){
Map<String,String> data = new HashMap<String,String>();
String[] rowdata = csv.getRowData();
data = csv.getRowToMap(rowdata);
data.put("AppURL", URL);
Object[][] dataobject = new Object[1][1];
dataobject[0][0] = data;
return dataobject;
}*/
public WebDriver getWebDriverInstance(){
return browser;
}
public synchronized int findFreePort() {
int port=0;
int srange=10000;
int erange=50000;
for(int i= srange; i<=erange;i++){
try{
ServerSocket socket= new ServerSocket(i);
port = socket.getLocalPort();
socket.close();
break;
}catch(IOException e){
continue;
}
}
return port;
}
}