In this post you will learn to how to execute selenium webdriver test script on two browser parallel using multithreading.
package
com.test;
import
java.io.File;
import
java.util.concurrent.TimeUnit;
import
org.openqa.selenium.By;
import
org.openqa.selenium.WebDriver;
import
org.openqa.selenium.firefox.FirefoxDriver;
import
org.openqa.selenium.ie.InternetExplorerDriver;
import
org.testng.annotations.AfterClass;
import
org.testng.annotations.Test;
public class
GoogleSearchMultiThread extends Thread {
private WebDriver driver;
private String baseUrl;
private String browsertype;
public GoogleSearchMultiThread(String name,
String browsertype) {
super(name);
this.browsertype = browsertype;
}
@Override
public void run() {
System.out.println("Thread- Started"
+
Thread.currentThread().getName());
try {
Thread.sleep(1000);
setUp(this.browsertype);
testGoogleSearch();
} catch (InterruptedException e)
{
e.printStackTrace();
} catch (Exception e) {
// TODO
Auto-generated catch block
e.printStackTrace();
} finally {
tearDown();
}
System.out.println("Thread- END " + Thread.currentThread().getName());
}
// main method to create thread and run
multiple thread
public static void main(String[] args) {
Thread t1 = new
GoogleSearchMultiThread("Thread Firefox", "Firefox");
Thread t2 = new
GoogleSearchMultiThread("Thread IE", "IE");
System.out.println("Starting
MyThreads");
t1.start();
t2.start();
System.out.println("Thread has been started");
}
// set up method to initialize driver object
public void setUp(String browsertype) throws
Exception {
if
(browsertype.contains("IE")) {
File IEDriver = new
File("IEDriverServer.exe");
System.setProperty("webdriver.ie.driver",
IEDriver.getAbsolutePath());
driver = new
InternetExplorerDriver();
} else if
(browsertype.contains("Firefox")) {
driver = new
FirefoxDriver();
}
baseUrl =
"https://www.google.co.in/";
driver.manage().timeouts().implicitlyWait(30,
TimeUnit.SECONDS);
driver.manage().window().maximize();
}
// test scripts
public void testGoogleSearch() throws
Exception {
driver.get(baseUrl +
"/");
driver.findElement(By.id("gbqfq")).clear();
driver.findElement(By.id("gbqfq")).sendKeys("Testing");
driver.findElement(By.id("gbqfb")).click();
driver.findElement(By.id("ab_opt_icon")).click();
driver.findElement(By.cssSelector("#ab_as
> div")).click();
driver.findElement(By.xpath("//input[@value='Advanced
Search']"))
.click();
}
// tear down function to close browser
public void tearDown() {
driver.quit();
}
}
In above class I use multithreading concept of java, when
you run test it will execute two thread of test on at firefox browser and other
on Internet explorer browser.
Thank you so much..!!
ReplyDeleteHow would be work with frame in page object model with TestNG Framework in selenium Webdriver?
ReplyDelete