Properties File | @DataProvider
The below example illustrates on how to work with @dataprovider in-order to fetch values from a properties file.
1| Create a Test class file similar to the one given below:
package packagename;
import java.util.HashMap;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
public class Google {
private WebDriver driver;
@DataProvider(name="keywords")
public Object[][] data() throws Exception {
HashMap<String,String[]> dataSet= new properties2TestData().getData();
String search1Strings[]=dataSet.get("search1");
String search2Strings[]=dataSet.get("search2");
int size =search1Strings.length;
// modify 2 upon the no. of rows; Here, I used two rows, 'search1' & 'search2'
Object[][] creds = new Object[size][2];
for(int i=0;i<size;i++)
{
creds[i][0]=search1Strings[i];
creds[i][1]=search2Strings[i];
}
return creds;
}
@BeforeTest
public void setUp() throws Exception {
driver = new ChromeDriver();
}
@Test(dataProvider = "keywords", description = "Google_Test")
public void search(String search1, String search2) throws Exception {
driver.get("http://www.google.co.in");
// search google via keyword 1
driver.findElement(By.name("q")).clear();
driver.findElement(By.name("q")).sendKeys("" + search1);
driver.findElement(By.name("q")).submit();
Thread.sleep(4000);
// search google via keyword 1
driver.findElement(By.name("q")).clear();
driver.findElement(By.name("q")).sendKeys("" + search2);
driver.findElement(By.name("q")).submit();
Thread.sleep(4000);
}
@AfterTest
public void tearDown() throws Exception {
driver.quit();
}
}
properties2TestData
2| Create another java class file, 'properties2TestData' under the same package.
package packagename;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.ResourceBundle;
public class properties2TestData {
public properties2TestData() {
}
public HashMap<String,String[]> getData(){
HashMap<String,String[]> configMap=new HashMap<String,String[]>();
try{
ResourceBundle bundle = ResourceBundle.getBundle("config");
Enumeration<String> keys = bundle.getKeys();
while(keys.hasMoreElements()){
String aKey = keys.nextElement();
String aValue = bundle.getString(aKey);
configMap.put(aKey, aValue.split(","));
}
} catch (Exception e) {
e.printStackTrace();
}
return configMap;
}
}
3| Create a properties data-source file similar to the contents given below separated with comma (,)
search1=Prashanth Sams,bypasshacker
search2=seleniumworks.com,bypasshacker.blogspot.com
4| Now, place config.properties file inside your project's Source folder[src]
5| Save the file and run test :)
import java.util.HashMap;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
public class Google {
private WebDriver driver;
@DataProvider(name="keywords")
public Object[][] data() throws Exception {
HashMap<String,String[]> dataSet= new properties2TestData().getData();
String search1Strings[]=dataSet.get("search1");
String search2Strings[]=dataSet.get("search2");
int size =search1Strings.length;
// modify 2 upon the no. of rows; Here, I used two rows, 'search1' & 'search2'
Object[][] creds = new Object[size][2];
for(int i=0;i<size;i++)
{
creds[i][0]=search1Strings[i];
creds[i][1]=search2Strings[i];
}
return creds;
}
@BeforeTest
public void setUp() throws Exception {
driver = new ChromeDriver();
}
@Test(dataProvider = "keywords", description = "Google_Test")
public void search(String search1, String search2) throws Exception {
driver.get("http://www.google.co.in");
// search google via keyword 1
driver.findElement(By.name("q")).clear();
driver.findElement(By.name("q")).sendKeys("" + search1);
driver.findElement(By.name("q")).submit();
Thread.sleep(4000);
// search google via keyword 1
driver.findElement(By.name("q")).clear();
driver.findElement(By.name("q")).sendKeys("" + search2);
driver.findElement(By.name("q")).submit();
Thread.sleep(4000);
}
@AfterTest
public void tearDown() throws Exception {
driver.quit();
}
}
properties2TestData
2| Create another java class file, 'properties2TestData' under the same package.
package packagename;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.ResourceBundle;
public class properties2TestData {
public properties2TestData() {
}
public HashMap<String,String[]> getData(){
HashMap<String,String[]> configMap=new HashMap<String,String[]>();
try{
ResourceBundle bundle = ResourceBundle.getBundle("config");
Enumeration<String> keys = bundle.getKeys();
while(keys.hasMoreElements()){
String aKey = keys.nextElement();
String aValue = bundle.getString(aKey);
configMap.put(aKey, aValue.split(","));
}
} catch (Exception e) {
e.printStackTrace();
}
return configMap;
}
}
3| Create a properties data-source file similar to the contents given below separated with comma (,)
search1=Prashanth Sams,bypasshacker
search2=seleniumworks.com,bypasshacker.blogspot.com
4| Now, place config.properties file inside your project's Source folder[src]
5| Save the file and run test :)
This comment has been removed by the author.
ReplyDeleteIt was very nice article and it is very useful to Selenium learners.We also provide Cub training software online training.
ReplyDeleteThanks for a great information in your blog. I have read all the post of your blog. Great work on selenium training in chennai
ReplyDelete
ReplyDeleteGood post. Love your view of the happenings back home. I am glad the testing community is coming together irrespective of the country they are from.
There is no bigger motivation than self motivation and it shows on a daily basis that testers are standing up to the plate to accept any challenge that is thrown their way.
Thanks for sharing your insight
Selenium Training Institute in Chennai
Selenium Training in Velachery
This comment has been removed by the author.
ReplyDelete
ReplyDeleteThose guidelines additionally worked to become a good way to recognize that other people online have the identical fervor like mine to grasp great deal more around this condition.
python Training in Bangalore | python Training in Bangalore
Learn Business Analysis, Python, Machine Learning, Data Science, Blockchain, DevOps, Selenium 3.0, and Other In-Demand IT Skills from Global Experts.www.mcal.in
ReplyDeleteWow this is really amazing post. Thanks for sharing the useful informative data. I appreciate your difficulty work. Keep blogging. Protractor Training in Electronic City
ReplyDeletePlumbing & HVAC Services San Diego
ReplyDeleteAir Star Heating guarantees reliability and quality for all equipment and services
Air Star Heating is specializing in providing top-quality heating, ventilating, air conditioning, and plumbing services to our customers and clients.
Our company is leading the market right now. By using our seamless and huge array of services. Our customers can now have the privilege of taking benefit from our services very easily and swiftly. To cope up with the desires and needs of our clients we have built an excellent reputation. We are already having a huge list of satisfied customers that seem to be very pleased with our services.
Plumbing & HVAC Services in San Diego. Call now (858) 900-9977 ✓Licensed & Insured ✓Certified Experts ✓Same Day Appointment ✓Original Parts Only ✓Warranty On Every Job.
Visit:- https://airstarheating.com
off white shoes
ReplyDeleteoff white outlet
nike sb