package com.example; import com.opencsv.CSVReader; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import static org.assertj.core.api.AssertionsForClassTypes.assertThat; /** * @author upgundecha */ public class SearchTestWithCSVDataProvider { WebDriver driver; @DataProvider(name = "searchWords") public Iterator<Object[]> provider() throws Exception { CSVReader reader = new CSVReader( new FileReader("./src/test/resources/data/data.csv") , ',', '\'', 1); List<Object[]> myEntries = new ArrayList<Object[]>(); String[] nextLine; while ((nextLine = reader.readNext()) != null) { myEntries.add(nextLine); } reader.close(); return myEntries.iterator(); } @BeforeMethod public void setup() { System.setProperty("webdriver.chrome.driver", "./src/test/resources/drivers/chromedriver"); driver = new ChromeDriver(); driver.get("http://demo-store.seleniumacademy.com/"); } @Test(dataProvider = "searchWords") public void searchProduct(String searchWord, String items) { // find search box and enter search string WebElement searchBox = driver.findElement(By.name("q")); searchBox.sendKeys(searchWord); WebElement searchButton = driver.findElement(By.className("search-button")); searchButton.click(); assertThat(driver.getTitle()) .isEqualTo("Search results for: '" + searchWord + "'"); List<WebElement> searchItems = driver .findElements(By.xpath("//h2[@class='product-name']/a")); assertThat(searchItems.size()) .isEqualTo(Integer.parseInt(items)); } @AfterMethod public void tearDown() { driver.quit(); } }